rcmdnk's blog

Pros and Cons: A Debaters Handbook

tmuxに慣れてみる: tmuxとGNU screenの違いなど から始まってtmuxを暫く試していましたが、 その中で気づいた 一方で出来るけど出来ないこと、 一方の方が優れてる点になどについて。

で、結局どちらを使うか。

screenの良い所

  • ステータスラインで全Window表示が簡単に出来る1。(tmuxでは全Paneを表示しようとするとちょっと大変、な上、切り替わった直後にきちんと載せることが上手く出来ない。)
  • 各領域(Window)ごとにキャプションを付けられる。
  • コマンドのヒストリーが残って再利用出来る。
  • 同時に二箇所に同じWindowを出せる(余り意味ない?)
  • キーバインド時にcommand classが定義でき、複雑な連続キー入力によるコマンド実行が可能。
  • コピーモード時にYだけで一行コピー可能2。(コピーモード時の自由度はscreenのが高い、と思う。)
    • コピーモード時に上下の移動がそのコラムで出来る。(何故かtmuxは毎回行末へ移動。これが上のコピーのショートカットキーがむしろtmuxに必要になるのに出来ない。)
  • multi_clipboardでマルチクリップボードが出来る3

tmuxの良い所

  • 設定がキーバインドもステータス設定も比較的楽。
    • ステータスラインは左右に一定時間毎に表示を変えらられる用領域と、Window情報が変わる毎にアップデートされるWindow情報領域がある。
  • bind-key -rPrefix無しの連続入力を可能にできる。(ただし、全てのキーバインドで一つだけなので余り色々してもよくわからなくなる)
  • デフォルトでマルチクリップボードに対応。
  • コピーモードにviモードとemacsモードがある。
  • コピーモード時(vi-copy)の矩形選択がviっぽくて分かりやすい。
  • スクロールバッファが実際に表示が始まったところが最初になる(ggで戻ってもscreenみたいに無駄に空白空間飛ばない)。
  • コマンドラインから殆ど全てのコマンドを送れる。
  • Prefix-zなどで一旦1つを全画面、戻す、のトグルが簡単に出来る。
  • 予め用意されたレイアウトがあり、Paneがいくつでも良しなに分割して表示してくれる。(screenでは自分で用意する必要があるのとどちらかと言うとtmuxのWindowの概念も入った感じのもの4。)
  • synchronize-panes onで複数Paneを同時に操作できる。
  • 多少軽い?(ただ最近の普通の端末ではどちらも全く問題にならない程度。)

まとめ

数えるとtmuxの方が優れてる点が多い感じですが、

  • ステータスラインはWindow等の今何が開いているか、の情報だけあれば良い。
    • 分割して各箇所での切り替えもよくするので各領域のキャプションも欲しい。
  • 使い方はscreen的な1つのViewのなかで色々立ち上げたプロセスを入れ替えたりしながら使う5

と言う点が強いのでやはりscreenの方にしよう、という感じ。 キャプションについてはプロンプトの所に情報を入れる事も可能ですが、 プロンプトの戯れ でやったプロンプトを気に入ってて変えられないので。。。 (そうでなくてもなるべくプロンプトは短くしたい。)

唯一synchronize-panes onの機能だけがscreenではどうしようも 無いものなのであれですが、 滅多に使うものでもないのでどうしても必要になったらその時だけ tmuxを立ち上げれば良いかな、と。 (今回色々設定できたのでtmuxを立ち上げてもすぐ使える様になったのは良かった点。)

また、synchronize-panes onが必要な時は、 沢山のサーバーへ簡単なコマンドを一斉に送る、みたいな時だと思いますが、 頻繁に行う様な作業ならスクリプトで送る様にしておくとかも出来ることも。

それ以外にも

とかを使えば複数サーバーに同時にコマンド送ることも出来たりしますし、 色々な処理を考えるとこれらのが良いのかも。

といったところで、取り敢えずtmuxもひと通り使える様になったな、 という感じになったところで screenに戻ろうかな、と。

Sponsored Links
Sponsored Links

« tmuxで1行ラインコピーを簡単にする Vimでシェルスクリプトを書く時の'w'の挙動 »

}