カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

tmuxでウィンドウ移動(Like Vim Keybindings)

ターミナルマルチプレクサ Advent Calendar 2011 : ATND19日目の記事でございます。


bannyanさんがセッションの移動に関して書いてらしたtmux で複数のセッションを移動する - 写経日記ので、カジュアルにウィンドウの移動でも書こうかと思います。

単に移動

まずは僕のtmux画面でも晒しておきましょう。

Snow LeopardでiTerm2を使い、サーバ上でtmuxを使ってます。バージョンは1.5を使い、ソースからインストールして使ってます。

ウィンドウを5つ開き、そのうちの1つのウィンドウを開いている状態です。現在、開いているウィンドウでは、縦分割を行い、上のペインにtopを、下は作業用に開いています。

現在、ウィンドウを5つ開いているわけですが、開いているウィンドウとは別のウィンドウに移動するためには、以下のようにします。

なので、今5番目のウィンドウに居ますので、4番目に移りたい場合は、「Ctrl」を押しながら「b」を押し、そのあとにpを押します。これがtmuxのウィンドウの移動となります。

Vimライクにウィンドウ移動

僕の場合、prefixは「t」で慣れているので、「Ctrl+t」を使っているのですが、わざわざウィンドウ移動のために2回キーを打つのは正直面倒という気持ちもあり、何とかしたいという思いがありました(大袈裟ですが)。

なので、~/.tmux.confに以下のように追加してみましょう。

まず、「unbind-key」を使って、デフォルトで設定されているバインドを初期化します。その上で、「-n」でエスケープシーケンスを使わず、ウィンドウの移動のコマンド(previous-window, next-window)をCtrl+ h または lでできるようにします。

このhやlというのは、ご存じの方も多いかと思いますが、Vimのキーバインドと同じなので、Vim使いには覚えやすいかと思います。
こうすることで、一回のタイプで、しかもVimに慣れていれば、分かりやすいキーバインドで、ウィンドウの切り替えができるようになります。

個人的にtmuxは設定しやすいので、好きですが、それでもやはりある程度手を加えないと、タイプ量が増えたり、指が痛くなったりしますので、最低限は手を加えてやりやすい環境を整えておきましょう。

tmux.conf含め、dotfilesはgithubで管理してますので、もう少し興味ある方は是非見てみてください。あと、こうしたほうがもっと楽になるよというのがあれば、是非教えてください!
github.com