Open11

iTerm2っぽいWezTermの設定

ultimatileultimatile

普段はiTerm2を使っていますがiTerm2由来の不具合に遭遇してしまったため一時的にWezTermを使用しています.
iTerm2の使用感に慣れており,満足していたため,iTerm2の使用感を目指します.
iTerm2に満足している方はiTerm2を使い続けるのがよろしいと思いますし,iTerm2に満足できなくてWezTermを使い始めた方にはあまり参考にならないかもしれません.

iTerm2には私は使ってない高度な機能があるようですが,使っていないので再現しません.

ultimatileultimatile

設定の基本

設定fileは$HOME/.config/weztermwezterm.luaというfileを作ります[1]
設定はLua言語で記述します.

設定fileの構造は

$HOME/.config/wezterm/wezterm.lua
local wezterm = require("wezterm")

local config = wezterm.config_builder()

-- ここに設定を書く

return config

の形になります.以下の設定は-- ここに設定を書くの部分に記述されています.

脚注
  1. $HOME//.wezterm.luaにも置けるようですが私の場合は設定が読み込まれませんでした. ↩︎

ultimatileultimatile

設定に関する設定

以下の設定をすると設定を変更した際に再起動なしで設定が反映されます.

config.automatically_reload_config = true
ultimatileultimatile

font

以下のようにお好きなfontに変更しましょう.
iTerm2はanti-alias設定がありweight="Regular"でもいい感じでしたがWezTermはそのような機能はなさそうで,weight="Bold"に設定するといい感じになりました.

config.font = wezterm.font("UDEV Gothic NF", { weight = "Bold" })
config.font_size = 16.0

参考

公式doc: https://wezfurlong.org/wezterm/config/fonts.html

ultimatileultimatile

colorscheme

お好きなcolorschemeに変更しましょう.
iTerm2の場合は,Tokyo Nightというdefaultで用意されていないcolorschemeにしたい場合,Tokyo Nightのrepositoryから設定fileを取ってきてiTerm2にそれを読み込ませて...とやっていました.
WezTermの場合,そのまま指定可能なcolorschemeがすんごい数あるので以下のように書くだけで設定できました.

config.color_scheme = "Tokyo Night Storm"

参考

指定可能なcolorschemeのlist: https://wezfurlong.org/wezterm/colorschemes/index.html

ultimatileultimatile

keybinding

defaultのkeybindingはwezterm show-keys --luaで確認することができます.
ひとまずこちらを眺めて何がdefaultで設定されているのか眺めるのも良いかもしれません.
また,defaultのkeybindingは https://wezfurlong.org/wezterm/config/default-keys.html で確認可能です.

default keybindingの無効化

まず始めにdefaultのkeybindingを以下のように設定して無効にします.
無効にしたくなかったらしなくても良いです.
無効にするとkeybinding全部自分で考えないといけなくなります.
defaultのkeybindingを確認した方はお分かりと思いますがCTRL+SHIFTのprefixが多用されています.これがNeovimとkeybindingと競合したため私は無効にしました.

config.disable_default_key_bindings = true

基本書式

以下のようにkey, mods, actionを指定したentryをkeysに突っ込んでいきます.
読み方は⌘などの修飾key(mods)+非修飾key(key)でactionが実行される,です.
最初のlocal act = wezterm.actionはaliasなのでやってもやらなくても良いです.
使わない場合以下に出てくるactwezterm.actionに読み替えてください.

local act = wezterm.action
config.keys = {
	{ key = "c", mods = "CMD", action = act.CopyTo("Clipboard") },
        -- 他のkeybinding
}
  • macOSでよく用いる修飾keyとmodsの記法の対応は以下の通りになります
key 記法
SHIFT
CMD
OPT
CTRL
  • mods|を用いてCMD|SHIFTのように複数の修飾keyの組合せが可能です.この例の場合⌘+⇧+keyになります.ORではありません.

参考

actionに指定可能なもの一覧: https://wezfurlong.org/wezterm/config/lua/keyassignment/index.html


以下では私が使っているkeybindingを展開します.

コピペ

  • ⌘+cでcopy
  • ⌘+vでpaste
{ key = "c", mods = "CMD", action = act.CopyTo("Clipboard") },
{ key = "v", mods = "CMD", action = act.PasteFrom("Clipboard") },

注意点としては,actionにはact.Copy act.Pasteがあるようですが非推奨のようです.

pane分割

  • ⌘+dで水平分割(paneを横に分割,左右に分かれる)
  • ⌘+⇧+dで垂直分割(画面を縦に分割,上下に分かれる)

余談ですがNeovimの:split/:vsplitと分割が逆で混乱しました.

{ key = "d", mods = "CMD", action = act.SplitHorizontal({}) },
{ key = "d", mods = "SHIFT|CMD", action = act.SplitVertical({}) },

tab作成

  • ⌘+tで新しいtabをhome directoryで開く
  • ⌘+⇧+tで新しいtabを今使っているdirectoryで開く
{ key = "t", mods = "CMD", action = act.SpawnCommandInNewTab({ cwd = wezterm.home_dir }) },
{ key = "t", mods = "SHIFT|CMD", action = act.SpawnTab("CurrentPaneDomain") },

defaultでは開くdirectoryは今使っているものだったのでcwd = wezterm.home_dirでhome directoryを開くように指定しています.
WezTermではhome directoryを~とか$HOMEとかで指定できない代わりにwezterm.home_dirを使用します.

window作成

  • ⌘+nで新しいwindowをhome directoryを開く
  • ⌘+⇧+nで新しいwindowを現在使っているdirectoryで開く
{ key = "n", mods = "CMD", action = act.SpawnCommandInNewWindow({ cwd = wezterm.home_dir }) },
{ key = "n", mods = "SHIFT|CMD", action = act.SpawnWindow },

paneを閉じる

⌘+wでpaneを閉じる

{ key = "w", mods = "CMD", action = act.CloseCurrentPane({ confirm = false }) },

tab,windowも最後のpane,tabならこれで閉じられるので閉じるのにはこれしか使っていません.
confirm = trueにすると閉じる前に確認してくれます.

追加予定?

私の行なっているkeybindingの設定は以上になります.
必要最低限という感じで,他にも設定可能なactionはたくさんありますし,pane/tab/window移動のkeybindingとかは設定した方が良い気がしますが私はあまり使ってないので設定していません.今後必要になったら設定するかもしれません.

ultimatileultimatile

option keyの有効化

option key (⌥)はdefaultではAlt keyとして解釈されています.
以下の設定を行うことで,option keyをそのまま解釈させるようにします.
umlautを入力するmacOSのkeybinding ⌥+uと競合したため設定しました.

config.send_composed_key_when_left_alt_is_pressed = true
config.send_composed_key_when_right_alt_is_pressed = true
ultimatileultimatile

⌥+uでumlautが入力できなくて苦戦していましたが,英字用のIMEとして日本語-ローマ字の英字モードを使っていたのが良くなかったっぽいです.英字入力のIMEをABCにしたら入力できるようになりました.