teraterm+tmuxでペインサイズ変更とコピー

/ Linux

teratermからtmuxを使っているとコピーモード中にコピーが出来なかったりデフォルトの設定からペインサイズの変更が出来なかったりした。

よく.tmux.confの設定を変更する類の解決策が出てくるがキー割り当てを変更して解決することはしない。設定をvimに合わせたりもしない。tmux.conf関連の検索結果におけるvimmerの多さにはうんざりした。

copymode時にCtrl+Spaceでコピー開始しない

Ctrl+Spaceを押すたびに右下タスクトレイのIMEがON/OFFに切り替わっていると思います。IMEのアイコンで右クリックして「設定」を開き、「キーとタッチのカスタマイズ」、「キーの割り当て」と進み「Ctrl+Space」を「なし」に設定します。これで

  1. Ctrl + [でコピーモード開始
  2. Ctrl + Spaceで選択開始
  3. Ctrl + Wでコピー完了
  4. Ctrl + ]でコピーした内容を貼付け

の流れが可能になります。これらはman tmuxやCtrl-b ?にも書いてあることです。特別な ~/.tmux.confが存在している必要はありません。teraterm側で「設定」、「その他の設定」、「制御シーケンス」から「リモートからのクリップボードアクセス」を「読込/書込」にしておくことでWindows側のクリップボードと連動できます。設定を変更したらTERATERM.INIの更新を忘れずに。

Ctrl-b Ctrl-方向キーでペインサイズが変更されない

これは.tmux.confが存在しない場合のデフォルトの動作です。動作しないのはTeraTerm側の設定の問題です。「設定」、「設定フォルダ」、「キーボード設定ファイル」から「Open File」を設定します。最初に次の行を探してコメントアウトします。

; Ctrl + up-arrow
;LineUp=1352
; Ctrl + down-arrow
;LineDown=1360

もともとはLineUpの行とLineDownの行にはセミコロンが無いはずです。ここにセミコロンを挿入します。次に末尾に以下の内容を追記します。

[User keys]
User1=1352,0,$1B[1;5A
User2=1360,0,$1B[1;5B
User3=1357,0,$1B[1;5C
User4=1355,0,$1B[1;5D

追記するのはUser keysの行より下の4行です。User keysの行は元から書き込まれているはずです。一度適当な場所に名前を付けて保存し、「設定」、「キーマップ読み込み」で読み込ませましょう。うまくCtrl-BとCtrl-方向キーでペインサイズが変わっていれば成功しています。TERATERM.INIと同じようにKEYBOARD.CNFを上書きしてしまいましょう。

この方法の調査には以下のページが大変参考になりました。

Ctrl-B Ctrl-方向キーはCtrl押しっぱなしでできるので大変スムーズです。特別な方向キーの概念を持っているvimmerの設定例にはうんざりしているのですがこの動作の何が不満なのでしょうか?繰り返しますが特別な ~/.tmux.confが存在している必要はありません。

Shift+方向キーとAlt+方向キーのKEYBOARD.CNF

tmuxデフォルトではCtrl-b Alt+方向キーもペインサイズの変更に使われています。こちらはサイズの変更量が5になっています。このほかShift+方向キーはrefresh-clientというコマンドに割り当たっていますがわかったので載せておきます。Altキーはteratermの「設定」「キーボード」からMetaキーをonにしておく必要があります。そうしないとAltを押したときにteratermのウィンドウのショートカットに認識されてしまいます。Altキーが左右にあるキーボードの場合は片側だけをtmux用のMetaキーに割り当てることも可能です。その場合はleftかrightを選択します。

; Ctrl+Arrow
User1=1352,0,$1B[1;5A
User2=1360,0,$1B[1;5B
User3=1357,0,$1B[1;5C
User4=1355,0,$1B[1;5D

; Alt+Arrow
User5=2376,0,$1B[1;3A
User6=2384,0,$1B[1;3B
User7=2381,0,$1B[1;3C
User8=2379,0,$1B[1;3D

; Shift+Arrow
User9=840,0,$1B[1;2A
User10=848,0,$1B[1;2B
User11=845,0,$1B[1;2C
User12=843,0,$1B[1;2D

これに関しては次のページが参考になりました。