Closed11
iTerm2からWezTermへ移行してみる
モチベーション
- https://dev.classmethod.jp/articles/wezterm-get-started/ をみて良さそうだと思った。
- iTerm2のconfig管理がめんどくさい
- iTerm2のconfig管理以外は不満ないけど、長らく使ってるので味変したい
インストール
brew install --cask wezterm
設定 (一旦クラメソ記事のコンフィグをコピー)
mkdir .config/wezterm && vi .config/wezterm/wezterm.lua
見た目
-- Pull in the wezterm API
local wezterm = require 'wezterm'
-- This will hold the configuration.
local config = wezterm.config_builder()
-- テーマ
config.color_scheme = 'Adventure'
-- フォント
config.font_size = 12.2
config.font =
wezterm.font('JetBrains Mono', { weight = 'ExtraBold', italic = false })
-- 背景の非透過率(1なら完全に透過させない)
config.window_background_opacity = 0.70
wezterm show-keys --lua
で現状のキーマッピング
wezterm ls-fonts --list-system
でフォント一覧
全てのタブをクローズしたときにアプリも終了する。便利
iTerm2っぽいキーマッピング
- cmd+d, cmd+shift+dでペイン作成
- cmd + [] でペイン移動
-- キーバインド
config.keys = {
-- ¥ではなく、バックスラッシュを入力する。おそらくMac固有
{
key = "¥",
action = wezterm.action.SendKey { key = '\\' }
},
-- cmd w でペインを閉じる(デフォルトではタブが閉じる)
{
key = "w",
mods = "CMD",
action = wezterm.action.CloseCurrentPane { confirm = true },
},
-- cmd d で右方向にペイン分割
{
key = "d",
mods = "CMD",
action = wezterm.action { SplitHorizontal = { domain = "CurrentPaneDomain" } },
},
-- cmd Shift d で下方向にペイン分割
{
key = "d",
mods = "CMD|SHIFT",
action = wezterm.action { SplitVertical = { domain = "CurrentPaneDomain" } },
},
-- cmd Ctrl oでペインの中身を入れ替える
{
key = "o",
mods = "CMD|CTRL",
action = wezterm.action.RotatePanes 'Clockwise'
},
-- cmd []でペインの移動 (Prev)
{
key = '[',
mods = 'CMD',
action = wezterm.action.ActivatePaneDirection 'Prev',
},
{
key = ']',
mods = 'CMD',
action = wezterm.action.ActivatePaneDirection 'Next',
},
}
CMDはSUPERとも書ける。多分マルチプラットフォーム意識するならSUPERの方が良さそう。
-- cmd d で右方向にペイン分割
{
key = "d",
+ mods = "SUPER",
- mods = "CMD",
action = wezterm.action { SplitHorizontal = { domain = "CurrentPaneDomain" } },
},
検索周りのキーマッピングいじる時は以下を追加する
config.key_tables = {
search_mode = {
{ key = 'Enter', mods = 'NONE', action = wezterm.action.CopyMode 'PriorMatch' },
{ key = 'Escape', mods = 'NONE', action = wezterm.action.CopyMode 'Close' },
{ key = 'n', mods = 'CTRL', action = wezterm.action.CopyMode 'NextMatch' },
{ key = 'p', mods = 'CTRL', action = wezterm.action.CopyMode 'PriorMatch' },
{ key = 'r', mods = 'CTRL', action = wezterm.action.CopyMode 'CycleMatchType' },
{ key = 'u', mods = 'CTRL', action = wezterm.action.CopyMode 'ClearPattern' },
{ key = 'PageUp', mods = 'NONE', action = wezterm.action.CopyMode 'PriorMatchPage' },
{ key = 'PageDown', mods = 'NONE', action = wezterm.action.CopyMode 'NextMatchPage' },
{ key = 'UpArrow', mods = 'NONE', action = wezterm.action.CopyMode 'PriorMatch' },
{ key = 'DownArrow', mods = 'NONE', action = wezterm.action.CopyMode 'NextMatch' },
}
}
wezterm show-keys --lua --key-table search_mode
で全ての検索関連のキーマッピングが取れるので全部登録してあげる必要がある。
通常のkeyは config.disable_default_key_bindings
がfalseなので、全てのkeyを定義し直さなくても追加分だけ反映してくれるっぽい。
検索周りの挙動をいくつか変えたいけど方法がわからない。
1 keyで 2 action動かすみたいなのができればいけそうなんだけど。
- 検索のデフォルトを case-sensitive -> ignore-caseにしたい
- 検索モードで ctrl+rで変更できる
- escapeで検索モード離脱したら検索窓に入力していた文字列をclearして欲しい
-
act.CopyMode 'ClearPattern'
をhookして動かしたい
-
escapeで検索モード離脱したら検索窓に入力していた文字列をclearして欲しい
wezterm.action.Multiple
でできた。
config.key_tables = {
search_mode = {
{ key = 'Enter', mods = 'NONE', action = wezterm.action.CopyMode 'PriorMatch' },
{
key = 'Escape',
mods = 'NONE',
action = wezterm.action.Multiple {
wezterm.action.CopyMode 'ClearPattern',
wezterm.action.CopyMode 'Close',
}
},
{ key = 'n', mods = 'CTRL', action = wezterm.action.CopyMode 'NextMatch' },
{ key = 'p', mods = 'CTRL', action = wezterm.action.CopyMode 'PriorMatch' },
{ key = 'r', mods = 'CTRL', action = wezterm.action.CopyMode 'CycleMatchType' },
{ key = 'u', mods = 'CTRL', action = wezterm.action.CopyMode 'ClearPattern' },
{ key = 'PageUp', mods = 'NONE', action = wezterm.action.CopyMode 'PriorMatchPage' },
{ key = 'PageDown', mods = 'NONE', action = wezterm.action.CopyMode 'NextMatchPage' },
{ key = 'UpArrow', mods = 'NONE', action = wezterm.action.CopyMode 'PriorMatch' },
{ key = 'DownArrow', mods = 'NONE', action = wezterm.action.CopyMode 'NextMatch' },
}
}
このスクラップは2024/06/15にクローズされました