Yusuke Ebihara's website
Dotfiles Blog RSS

wezterm/キーマップ

キーマップ

Key Binding - Commentary of Dotfiles を参考に設定していく。

設定ファイルを作る。

以下は ~/.config/wezterm 以下で作業する。

wezterm show-keys --lua > keybinds_default.lua

でデフォルトキーマップを keybinds_default.lua として出力できる。

keybinds.luakeybinds_default.lua をコピーして、キーマップを全部削除しておく。 必要なものだけ追加して設定していく。

-- keybinds.lua
local wezterm = require 'wezterm'
local act = wezterm.action

return {
  keys = {
    --
  },
  key_tables = {
    copy_mode = {
      --
    },
    search_mode = {
      --
    },
  }
}

設定ファイルを読み込む

今作成したファイルを wezterm.lua から読み込む。

 -- wezterm.lua
 local wezterm = require("wezterm")
 
 return {
+    keys = require('keybinds').keys,
+    key_tables = require('keybinds').key_tables,
+    disable_default_key_bindings = true,
     font_size = 10.0,
     color_scheme = "Arthur",
     use_ime = false,
 }

これで、キーバインド設定の準備が整った。

vim -O keybinds.lua keybinds_default.lua

で左右分割で開いて、 keybinding_default.lua から keybinding.lua にコピペで移していく。

LEADER

tmuxを使っていたので、tmuxっぽいキーバインディングにする。

LEADERキーを設定する。

 -- wezterm.lua
 local wezterm = require("wezterm")
 
 return {
+    leader = { key = 's', mods = 'CTRL', timeout_milliseconds = 2000 },
     keys = require('keybinds').keys,
     key_tables = require('keybinds').key_tables,
 ...

LEADERを使ってキーバインドを設定する。

 -- keybinds.lua
 ...
 return {
   keys = {
+    { key = 'h', mods = 'LEADER', action = act.ActivatePaneDirection 'Left' },
+    { key = 'j', mods = 'LEADER', action = act.ActivatePaneDirection 'Down' },
+    { key = 'k', mods = 'LEADER', action = act.ActivatePaneDirection 'Up' },
+    { key = 'l', mods = 'LEADER', action = act.ActivatePaneDirection 'Right' },
+
+    { key = "-", mods = 'LEADER', action = act.SplitVertical { domain = 'CurrentPaneDomain' } },
+    { key = "'", mods = 'LEADER', action = act.SplitHorizontal { domain = 'CurrentPaneDomain' } },
+
+    { key = '[', mods = 'LEADER', action = act.ActivateCopyMode },
+    { key = ']', mods = 'LEADER', action = act.PasteFrom 'Clipboard' },
   },
 ...

key_tables.copy_mode はほぼデフォルトのコピーで、tmuxっぽい挙動をする。

一行だけ、Enterキーでコピーできるように書き換える。

 -- keybinds.lua
   key_tables = {
     copy_mode = {
       { key = 'Tab', mods = 'NONE', action = act.CopyMode 'MoveForwardWord' },
       { key = 'Tab', mods = 'SHIFT', action = act.CopyMode 'MoveBackwardWord' },
+      { key = 'Enter', mods = 'NONE', action = act.Multiple{ { CopyTo =  'ClipboardAndPrimarySelection' }, { CopyMode =  'Close' } } },
-      { key = 'Enter', mods = 'NONE', action = act.CopyMode 'MoveToStartOfNextLine' },
       { key = 'Escape', mods = 'NONE', action = act.CopyMode 'Close' },
       ...
       { key = 'DownArrow', mods = 'NONE', action = act.CopyMode 'MoveDown' },
     },
     ...

References

コメント

Github Issue と連動しています。