端末マルチプレクサとして,LinuxではGNU Screenを,Windows Subsystem for Linux (WSL)ではtmuxを使用しています.
プレフィクスキーはそれぞれ,C-pとC-lに設定しています.WSLのtmuxのウィンドウの一つを使って,sshでLinuxサーバにログインし,そこからはscreenです.
最近,「Chrome リモート デスクトップ」を使い始めました.マウス操作やファイルのアップロード・ダウンロードができるので,TeamViewerからの移行を進めています.
日本語入力を含めキー操作もOKなのは嬉しいのですが,WSLの端末を開いて,tmuxのあと,Ctrlを押しながらLとすると,うまくいきません.Ctrl+Lのキーが,Chromeに取られてしまっています.
Chromeのショートカットキーの制御は,できそうにないので…
tmuxのプレフィクスキーを変更することにしました.リモートデスクトップの操作から,Ctrl+Q (C-q)がChromeに取られないのを確認しました.Aの左のCtrlを左手の薬指,Qを中指で押してみて,違和感がありません*1.C-qを採用すしました.
設定ファイルは,~/.tmux.confです.開いて中身を見る*2と,次のように書いていました.
# プレフィクスキーはC-l (Ctrl+L) set -g prefix C-l unbind C-b bind C-l send-prefix
ここにC-qを書き足します.
# プレフィクスキーはC-l (Ctrl+L) set -g prefix C-l unbind C-b bind C-l send-prefix # プレフィクスキーはC-q (Ctrl+Q)も set -g prefix C-q bind C-q send-prefix
リロードすると,C-lもC-qも有効とは,なりませんでした.どうやら「set -g prefix」で指定できるのは1つだけです.最終的に以下のようにしました.
# プレフィクスキーはC-Q (Ctrl+Q) set -g prefix C-q unbind C-b bind C-q send-prefix
さて,tmuxでC-lをプレフィクスキーにした理由の一つは,C-lを1回押して,画面消去したくなかったからです.C-lを2回で画面消去というのに,慣れてしまっています.
この操作は,tmuxではなくzshで設定しました.使用するのは,ビルトインコマンドのbindkeyです.
「bindkey」だけを実行してから一覧を眺め,次に,以下の2つを実行しました.C-lが1回は無反応,2回で画面消去となりました.
bindkey -r '^L' bindkey '^L^L' clear-screen
編集ファイルを~/.zshrcに切り替えて挿入し,zshを再起動.うまくいきました.
*1:本記事作成中にhttps://qiita.com/hnw/items/02113da3476f29df768bを見つけました.Ctrl+Qも,候補に挙がっていました.
*2:大部分はhttps://qiita.com/succi0303/items/cb396704493476373edfの設定内容をそのまま使っています.ただしマウス操作を有効にする「setw -g mouse on」は,引き続きコメントにしています.端末をドラッグやダブルクリック・トリプルクリックしてコピーし,端末と別に起動しているEmacsやブラウザなどへ貼り付けるには,有効にしているとうまくいかないのです.