2009-07-09
時代はGNU screenからtmuxへ
GNU screenはもう古いので皆さんtmuxへ移行しましょう、という話。Gentooならemerge tmux。
スクリーンショット
手元のtmuxを撮ってみた。縦分割モード。ウィンドウマネージャはawesome。左のircクライアントはweechat。
tmuxへ移行する理由(メリット)
- 標準設定のままでもそれなりに使えるステータスバー
- 各ショートカットがコマンドベース(コマンドで操作ができる)
- 標準で縦分割機能搭載
- GNU screenがたまに固まる問題(が発生するのは私だけ?)が発生しないかも
- ビュー専用のスクロールモード
- 柔軟なペイン制御
- コピー&ペースト用のバッファを複数保持できる
- terminfo的にscreen互換
- メモリ消費量が少ない(GNU screenの約1/5)
- 一部機能でマウスが使用できる(mode-mouse, mouse-select-pane)
- 活発に開発中
tmuxへ移行する上での注意点(デメリット)
- GNU screenにはないペインの概念がややこしい(複数同時表示できるのはペインのみ、ウィンドウは1つのtmux上で同時に表示できない)
縦分割時にペインを狭める/広げることが現状できない*1- マルチバイト文字がたまに表示上消える(Ctrl+Lで復活)
- バッファのペースト時にマルチバイト文字が化けることがある
コピーモード中に検索が現状できない*2- GNU screenにあるシリアル接続機能はない
- Windowsからtelnet/ssh経由でtmuxを操作する場合、画面が崩れる場合がある
- まだ発展途上
GNU screenとtmuxのキーマップの違い
GNU screen風にキーカスタマイズも出来るけど、折角だからtmuxのキーマップに慣れましょう。いくつかピックアップ。
| 操作 | screen | tmux |
|---|---|---|
| ウィンドウを作成 | C-a c または C-a C-c | C-b c |
| ウィンドウ名を変更 | C-a A | C-b , |
| ウィンドウ一覧表示/移動 | C-b " | C-b w |
| 次のウィンドウへ移動 | C-a n または C-a C-n | C-b n |
| 前のウィンドウへ移動 | C-a p または C-a C-p | C-b p |
| 最後に操作したウィンドウへ移動 | C-a C-a | C-b l |
| ウィンドウを強制終了 | C-a k | C-b & |
| ペイン分割 | C-a S | C-b " |
| ペイン分割解除 | C-a Q | C-b ! |
| ペインを強制終了 | C-a k | C-b x |
| ペイン間移動 | C-a Tab | C-b o または C-b Up または C-b Down |
| ペインを狭める/広げる | C-a - または C-a + | C-b C-Up または C-b M-Up または C-b C-Down または C-b M-Down |
| ペイン配置パターンの変更 | なし | C-b Space または C-b {1,2,9} |
| 中断 | C-a d または C-a C-d | C-b d |
| 再開 | screen -x | tmux attach |
| ウィンドウ配置の変更 | なし | C-b Space |
| コピーモードでのコピー始点選択 | Space または Enter | C-Space (viモードならSpace) |
| コピーモードでのコピー終点選択 | Space または Enter | M-w (viモードならEnter) |
| 現時刻表示 | C-a t または C-a C-t | C-b t |
追記:GNU screen風キーカスタマイズも用意しました。
その他
今から使うならロケール問題が解消されたtmux-0.9以降がオススメ。ただ、tmux-0.9でも設定ファイルにutf8の記述が必要。私の今の設定(~/.tmux.conf)はこんな感じ。詳しくはtmux(1)を参照。
set-window-option -g utf8 on # 日本語環境なら今のところ必須。 set-window-option -g mode-keys vi # コピーモードのキーマップ。標準はemacs set-window-option -g automatic-rename off # ウィンドウ名が自動的に更新されないように
Vimで色が正しくでない場合は、t_Coが指定されていないか確認。
" t_Coを指定しているとtmuxでは色が正しくでないのでコメントに "set t_Co=88 "set t_Co=256
トラックバック - http://d.hatena.ne.jp/tmatsuu/20090709/1247150771
- (rubikitch loves (Emacs Ruby CUI)) - GNU Screenは古いの?
- それ、Gentooだとどうなる? - tmuxをGNU screen風キーバインドに変...
- src’s note - 気になる技術メモ
- IT戦記 - tmux 入れてみた
- hogehoge - tscreen
- hijouguchiの日記 - 雑記
- horizontal split
- watanaaの日記 - 時代はGNU screenからtmuxへ
- 日記のタイトル - tmux導入
- yuitowest的な - tmuxを使ってみた
- yuitowest的な - tmuxを使ってみた
- toguniの日記 - tmux
- 消しゴムの角は最初に使いましょう - screenのかわりにらしいtmuxを...
- 人生 - tmux導入
- bsiyoの日記 - diary
- tmuxをMacに入れてみた
- とある技術者の徒然なる日記 - tmux
- 組み込みの人。 - screenコマンドはリモートログインの親友
- mikenekoDXの日記 - tmux > screen
- Kshiの日記 - CentOSにtmux1.1をインストール
- Kshiの日記 - 1265900214**[自宅サーバ]CentOSにtmux1.1をインスト...
- mknkのLinux系技術ぶろぐ - tmux > screen
- それ、Gentooだとどうなる? - (GNU screenは)まだだ、まだ終わら...
- mizchi log - Ubuntuでtmuxで幸福実現しました
- #junki::acoustic - tmuxが便利な件
- #junki::acoustic - tmuxが便利な件
- #junki::acoustic - tmuxが便利な件
- しばそんノート - PuTTY+tmuxでターミナル環境再構築
- pnokの日記 - 時代はGNU screenからtmuxへ
- pnokの日記 - tmux
- 凡人プログラマ - screenからtmuxに乗り換えたら快適!(二点除く)
- 刺身☆ブーメランのはてなダイアリー - tmux いれてみたメモ
- 少しちっちゃめの日記 - 八王子.pm in 町田に行ってきたよ!
- Glitch - tmux+byobu
- ヌキのやる気のないエンジニアブログ - tmuxの使い方メモ
- ymkoの日記 - tmux
- すぎゃーんメモ - tmuxを使い始めてみた
- SE街道まっしぐら - tmuxの導入方法
- h-kageyuの日記 - tmux を使わんとてす
- Log4jpnLog - tmux の導入と諸設定 メモ
- zsh, tmux, vimで構築する快適なCUI環境 2/3 「tmux」編
リンク元
- 56 http://reader.livedoor.com/reader/
- 45 http://b.hatena.ne.jp/
- 44 http://b.hatena.ne.jp/hotentry
- 40 http://d.hatena.ne.jp/
- 36 http://twitter.com/
- 26 http://www.tumblr.com/dashboard
- 19 http://www.google.com/reader/view/
- 17 http://b.hatena.ne.jp/entrylist
- 17 http://b.hatena.ne.jp/entrylist/it
- 16 http://b.hatena.ne.jp/hotentry/it

