Closed11

iTerm2からWezTermへ移行してみる

koh-shkoh-sh

インストール

brew install --cask wezterm

設定 (一旦クラメソ記事のコンフィグをコピー)

mkdir .config/wezterm && vi .config/wezterm/wezterm.lua
koh-shkoh-sh

見た目

-- 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

https://wezfurlong.org/wezterm/config/fonts.html
https://wezfurlong.org/wezterm/colorschemes/a/index.html#adventure

koh-shkoh-sh

wezterm show-keys --lua で現状のキーマッピング
wezterm ls-fonts --list-system でフォント一覧

koh-shkoh-sh

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',
    },
}
koh-shkoh-sh

CMDはSUPERとも書ける。多分マルチプラットフォーム意識するならSUPERの方が良さそう。

    -- cmd d で右方向にペイン分割
    {
        key = "d",
+        mods = "SUPER",
-        mods = "CMD",
        action = wezterm.action { SplitHorizontal = { domain = "CurrentPaneDomain" } },
    },
koh-shkoh-sh

検索周りのキーマッピングいじる時は以下を追加する

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を定義し直さなくても追加分だけ反映してくれるっぽい。
https://wezfurlong.org/wezterm/config/default-keys.html

koh-shkoh-sh

検索周りの挙動をいくつか変えたいけど方法がわからない。
1 keyで 2 action動かすみたいなのができればいけそうなんだけど。

  • 検索のデフォルトを case-sensitive -> ignore-caseにしたい
    • 検索モードで ctrl+rで変更できる
  • escapeで検索モード離脱したら検索窓に入力していた文字列をclearして欲しい
    • act.CopyMode 'ClearPattern' をhookして動かしたい

https://wezfurlong.org/wezterm/scrollback.html#configurable-search-mode-key-assignments

koh-shkoh-sh

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にクローズされました