rcmdnk's blog

Backspace (English Edition)

tmuxを使ってて少し違和感あるな、と思ったら Prefix Ctrl-hで左のPaneへ移る、 という操作設定がきちんと把握されてなかったのでその辺について。

C-h

Ctrl-hはターミナル上では基本的にBackspace と同じ信号を送ります。

これはターミナルの種類や設定、またはシェル側の設定でも変更できたりします ので環境ごとにチェックが必要ですが基本的にはBackspace=Ctrl-hです。

最終的にtmuxなどソフトにどう認識されるか、が重要ですが、 手元のWindows + PuTTY/CygwinではCtrl-hは 完全にBackspaceとして見られ、 一方、MacのターミナルではCtrl-hはそのまま認識されてる様に なっています。

ここで、問題になってくるのがキーバインドする時にどうするか、で、 もともとMacで

bind-key -r C-h select-pane -L
bind-key -r C-j select-pane -D
bind-key -r C-k select-pane -U
bind-key -r C-l select-pane -R

みたいな感じでVimライクにPaneの移動をするようにしていましたが、 これだとWindowsで左へ移る、ができません。

tmuxの場合

これを有効にするためには、Ctrl-hの代わりにBackspaceをバインドしてあげる必要があり、

bind-key -r C-h select-pane -L
bind-key -r BSpace select-pane -L # Backspace

と、tmuxではBSpaceと表します。

コレ意外にも、通常のキー以外ではUpLeftなどのカーソルキー等。 DeleteDeleteでもDCと短縮形でもOK。

また、EnterEscapeSpaceTabなどはそのまま、 F1などもそのまま書けます。

BackSpaceだけがちょっと特殊でBSpaceB側を短縮しないといけません。

それから/などはクォートして'"'/"'"として使う必要が有ります。

取り敢えず環境によってCtrol-hがどう捉えられるかわからないのと、 Backspaceは取り敢えず別途バインドする必要はないので、 上の様に両方書いておくのが吉です。

GNU screenの場合。

GNU screenの場合にも同じような問題はあって、 screenの場合にBackspaceをバインドしたい場合には、 -kというtermcap keyboard capability name 1 で指定できるオプションを使って

bind ^h eval    'focus left'
bind -k kb eval 'focus left' #Backspace

とします。(kbBackspaceの名前。)

Sponsored Links
  1. Ubuntu Manpage: termcap - terminal capability database

    もしくはman terminfoでチェック。

Sponsored Links

« ブログがコピーされた事をGoogleアナリティクスでイベントトラッキングするトラッキングコード tmuxで1行ラインコピーを簡単にする »

}