Wezterm的config檔的keybinding格式到底是什麼?

現在主力的terminal emulator是 WezTerm ,有時候寫文件會把他切成兩個pane,上面是editor下面是呼叫pandoc等等的。

因為Wezterm切換pane的組合按鍵要用到方向鍵(Ctrl+Shift+Arrow),在筆電上使用時,方向鍵實在太小太虐人了,就想改到沒用到的Alt + F1 - F4改成←↓↑→,但WezTerm的config是Lua語法,又不知道keybinding裡面到底是什麼格式,誰知道要怎麼寫啊?

找了半天發現有這個 command:

$ wezterm --help
  show-keys    Show key assignments

$ wezterm show-keys --help
  --lua        Show the keys as lua config statements

所以執行

wezterm show-keys --lua

就可以得到lua語法的keybinding map:

return {
  keys = {
    -- ...
    { key = 'LeftArrow', mods = 'SHIFT|CTRL', action = act.ActivatePaneDirection 'Left' },
    -- ...
    },
}

再去 /.wezterm.lua 把想要的binding補上去就好:

config.keys = {
  {key = 'F1', mods = 'ALT', action = wezterm.action.ActivatePaneDirection 'Left'},
}

結果改完就發現ActivatePaneDirection的參數竟然可以設定Next,於是就改成用 Ctrl + ` 來控制switch pane了(同VS Code叫出terminal的shortcut):

config.keys = {
  { key = '`', mods = 'CTRL', action = wezterm.action.ActivatePaneDirection 'Next' },
}

改完又發現有 watchexec 這個工具可以自動監控檔案變化就執行其他指令,根本就不需要手動切換之後按↑再ENTER 上面的折騰都是白費的

留言