tmux で簡単に pane を swap するスクリプトを書いた

去年まで shell は Emacs 上で multi-shell を使っていたんですが、補完が微妙なのと遅いのと less などが使えないのを理由に、数年使っていた multi-shell を捨てて tmux 上で Emacs と zsh を立ち上げるようなスタイルに変更しました。1
っで、基本的に横 2 分割でバッファを切り替えて作業する私にとって、このスタイルだと Emacs の pane を表示しながら使用できる shell が 1 つしかないのが非常に苦痛でした。

というわけで、pane を swap するためのスクリプトを書きました。
https://github.com/abicky/swap-pane
Inspired by uu59のメモ | percolでtmuxのペインを選択するやつ

デモ

tmux 上で Emacs を立ち上げてから、横に 2 分割し、 B で node, irb, python と次々と立ち上げ(立ち上げる度に window が増えていることに気付くかと思います)、それから b で node を選択、swap-pane コマンドで python を選択しています。

20140505171447

new-window 経由で実行すると黒背景になるのが不思議です・・・。TERM=xterm-256color を指定してもダメですし。

インストール方法

README を読んでください。やっていることは次のとおりです。

  1. swap-pane を PATH の通っている場所に設置
  2. percol をインストール
  3. .tmux.conf と .zshrc に設定を追加

使い方

README と同じように設定した場合、 b で他の pane を選択可能になります。 B だと新しい pane を作成し、その pane と swap します。 swap-pane コマンドを実行してもいいですが、REPL などを実行している場合はいちいちそれを suspend しないといけないので、基本的には b とかでの切り替えになると思います。

これで作業効率がグッと上がりそうです!!

  1. 一時期 multi-term を自分好みに改造しようと試みましたが挫折しました