ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

tmuxコマンドとscreenコマンド

最近SSH接続して作業することが多くなり、これまではscreenコマンドを使っていました。 tmuxというものの方が活発的に開発されているらしく、ちょっと気になっていたので使ってみました。

OS Xにはscreenコマンドはバンドルされていますが、tmuxはありません。自分でビルドするかHomebrewを使ってインストールすると利用可能になります。

$ brew install tmux
$ tmux -V
tmux 2.3

screenコマンドは割と手に馴染んでいたものの、誤操作でセッションの復元に失敗したり、履歴のマウススクロールがうまく行かず、代替えを探していたらtmuxに出会ったというわけです。でも実はscreenでもマウスによる画面スクロールができるらしいことがわかりました(後述します)。

といっても、デフォルト設定のままのtmuxでは画面スクロールはできません。.tmux.confに次のように設定をすると可能になります。

$ vi ~/.tmux.conf

#History Size
set-option -g history-limit 5000

#Status Configure
set-option -g status-right '[%m-%d(%a) %H:%M]'

#Use 256color
set -g default-terminal "screen-256color"

#Mouse Scroll (OSのコピペ機能を使うにはoption(alt)を押しながら範囲指定。qで抜ける)
set-option -g mouse on

ちなみにtmux 2.1からマウス関連の設定の書き方が変わったようです。ネット検索すると古いバージョンでしか使えない設定がありますので要注意です。

設定変更したところ大体自分の手に馴染むようになりましたが、マウスによるスクロールをサポートする設定を追加すると、OSのコピーアンドペーストの機能を使う場合にAltキーの押下が必要になるようです。ちょっとこれが面倒です。

そこでscreenで画面スクロールをする方法を調べました。

$ vi ~/.screenrc

#History Size
defscrollback 5000

#Status Configure
hardstatus alwayslastline "[%02c] %-w%{=b bw}%n %t%{-}%+w"

#Use 256color
term screen-256color

#Mouse Scroll 
termcapinfo xterm* ti@:te@

最終行のそれがそのための設定です。以上の設定でtmuxもscreenも大体同じように使えるようになりました。 位置は違いますが、時計とか表示させてみました。下記のスクリーンショットは画面スクロールしたので、screenコマンドの方はステータスバーみたいなものは見えませんけどね。

f:id:ytooyama:20161116222536p:plain

セッションの復元

tmuxコマンドとscreenコマンドにおけるセッションの復元は次のように操作することで可能です。

$ tmux a
(tmuxの場合)
$ screen -r
(screenの場合)

せっかくインストールしたのでとりあえずしばらくはtmuxを使ってみようと思います。