Commandキーをtmuxのプレフィックスキーとして使う方法 on Iterm2
はじめに
tmuxのプレフィックスキーに最適なキーを探して数年が経ちました。 Vimのキーマップやターミナルのショートカットを考慮するとプレフィックスキーとして使える組み合わせってほぼ残って無いです。 (デフォルトのCtrl+bとか、shellでめっちゃ多用します)
なので色々な組み合わせを試してきたんですが、最近MacだったらCommandキーをプレフィックスキーとして使えば良いのではと考えて設定してみたら結構いい感じです。
「Commandキー+何かのキー」をプレフィックスキーとして使うメリットには主に下記2点が挙がります。
- 押しやすい位置にある
- ターミナルで動くツール(vim, bash, 他CLIツール類)とショートカットでバッティングすることが無い(多分)
親指で押せる位置にあるというのは、ターミナルで生活する者としては結構重要です。小指とかで押すCtrl等をプレフィックスキーとして使用すると小指が死んでしまいます。
Commandキー単押しでプレフィックスキーとして動作させることも可能ですし、 Commandキー + '
をtmuxのpane分割キーとして設定すること等も可能です。
前提
- 下記環境で動作確認を行っています。
- macOS Catalinaバージョン10.15.5
- iTerm2 Build 3.3.11
- tmux 3.0a
設定方法
Iterm2にはキーボードショートカットを自分で登録する機能が最初からついてます。
ショートカットを入力した際に色々なアクションを実行できるのですが、そんなアクションの中に "Send Hex Code" というアクションがあります。
その名の通りショートカットを入力した際にASCIIコードを送信してくれる機能です。
これを利用して、Commandキーを入力した際にtmuxのプレフィックスキーとして設定したキーのASCIIコードを送信してもらいます。
どのキーがASCIIコードの16進数で何に該当するのかは下記サイトをみると分かります。
ASCIIコード表: https://ja.wikipedia.org/wiki/ASCII
tmux 側の設定
tmuxのprefix設定は何でも良いわけではありません。
tmuxでは Ctrl-<Space>
をプレフィックスキーとして使うことが出来るのですが、上記 "send Hex Code" の機能ではASCIIコード表に載っている文字もしくは制御文字しか対応していません。
なので普段使わなさそうな制御文字をプレフィックスキーとして利用します。
ASCIIコードの制御文字とその説明はWikipediaみると分かりやすいです。
Wikipedia制御文字: https://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E6%96%87%E5%AD%97
私は Ctrl + \
をtmuxのプレフィックスキーとして設定しました。 (制御文字としてはFile Separatorだそうです。)
.tmux.conf
の設定として書くなら下記のようになります。(エスケープするためにバッククォートが2つついてます。)
Iterm2 側の設定
次にIterm2側の設定です。 Iterm2のPreferencesから設定します。(Preferencesの開き方はCommandキー + ,
)
Preferences > Keys > Key Bindingsの左下の + ボタンからキーボードショートカットを新しく登録します。
私の設定を例にすると以下のようになります。
- Preferences > Keys > Key Bindingsの左下の + ボタンを押す
- Commandキーの単押しをプレフィックスキーとして使いたいので、 "Keyboard Shortcut" のところをクリックしてCommandキーを押す
- Actionで "Send Hex Code" を選択する
- Actionの下に入力欄が出るので、そこに先程プレフィックスキーとして設定した制御文字のASCIIコードを入力する
- (私はFile Separatorをプレフィックスキーとして設定したので、そのASCIIコードである1cを入力します)
上記設定ができれば下記画像のようになるはずです。
ここまででCommandキーをプレフィックスキーとして利用できます。動作確認して終わりです。お疲れさまでした。
おまけ
ここまでの設定の応用として、Commandキー + '
をプレフィックスキーを押したあとで ' キーを押したと同様の動作(tmuxのデフォルト設定だとpaneの分割) をするようにしてみます。
- Preferences > Keys > Key Bindingsの左下の + ボタンを押す
Commandキー + '
をプレフィックスキーとして使いたいので、 "Keyboard Shortcut" のところをクリックしてCommandキーを押す- Actionで "Send Hex Code" を選択する
- Actionの下に入力欄が出るので、そこに先程プレフィックスキーとして設定した制御文字のASCIIコードを入力し、半角スペースを入れて ' キーのASCIIコード(22) を入力します。
- (私はFile Separatorをプレフィックスキーとして設定したので、そのASCIIコードである1cを入力します)
これで Commandキー + '
をpane分割のショートカットとして登録できました。
この調子でよく使うtmuxの操作をショートカットとして登録すると便利です。私の設定は現在下記画像の様になっていました。
Commandキーをプレフィックスキーとして利用すると小指に優しいのでおすすめです。
良かったらぜひ試してみて下さいませ。