GNU Screenの画面分割のキーバインドをEmacs風にする

一つのターミナルの上で、複数の仮想ターミナルを切り替えて使うことができるscreenというソフトウェアがある。

このソフトウェアには画面分割機能 (Regions) があるのだけど、標準のキーバインドは次のようになっていて、使いやすくない(C-aはエスケープキーを指す)。

  • C-a S: 横に2分割する (split)
  • C-a |: 縦に2分割する (split -v)
  • C-a : Regionを移動する (focus)
  • C-a Q: フォーカルのあるRegion以外をすべて閉じる (only)
  • C-a X: フォーカスのあるRegionを閉じる (remove)
  • 割り当てなし: Regionの大きさを変える (resize)

そういうわけで、これまで画面分割をしたいときは C-a : から直接コマンドを打ち込んでいた。

ところが、実はscreenでもEmacsのような複数ストロークでのキーバインドを設定することができる。 具体的には、.screenrc に下記のように書くと、C-a x 2で横分割などができるようになる。

# operate regions like emacs
bind x command -c escape-x-map
bind -c escape-x-map 2 split
bind -c escape-x-map 3 split -v
bind -c escape-x-map o focus
bind -c escape-x-map 1 only
bind -c escape-x-map 0 remove
bind -c escape-x-map } resize +10
bind -c escape-x-map { resize -10
bind -c escape-x-map + resize =

Emacsキーバインドも独特ではあるけれど、Emacsに慣れているなら覚えやすいと思う。