最後に使ったのは
普段はGNU screenを使っているのでtmuxはたまにいじる程度ですが、 ブログを見る限りでは2015年の頭の頃に使って以来まともに使ってないみたいです。
tmuxのRelaseses を見ると2015年の6月に2.0がリリースされているので 完全に1.Xを使っていたんだと思います。
まあ、今更ですが。
以下.tmux.confの変更点など。
bind-keyのオプション
.tmux.conf:82: usage: bind-key [-cnr] [-T key-table] key command [arguments]
こんなエラーが出ました。
設定は
ind-key -t vi-copy C-h cursor-left
こんな感じのものです。コピーモードでViモードを使うとき、Ctrl-Hで左に動く、という設定。
まず、-t
というオプションが-T
に変わりました。なぜかは知りませんが、オプションとしては同じものです。
なので単に-T
に書き換えてやれば良いだけです。
すると今度は
.tmux.conf:81: unknown command: cursor-left
と出ましたが、これは最後のコマンドの設定の所で2.Xではsend-keys
を使う様になったためで
bind-key -T vi-copy C-h send-keys -X cursor-left
と書いてあげる必要があります。
これでエラーは出なくなりますが意図した通りキーバインドが効いてません。
これはモードの名前がvi-copy
からcopy-mode-vi
と変わったためです。
で、最終的に
bind-key -T copy-mode-vi C-h send-keys -X cursor-left
と書けば意図したとおりに動きます。
Ref: invalid or unknown command: bind-key -t vi-copy ....
· Issue #754 · tmux/tmux
utf8
.tmux.conf:106: invalid option: status-utf8
.tmux.conf:107: invalid option: utf8
といった感じのutf8関連の設定のエラーが出ました。
# UTF8
set-option -g status-utf8 on
set-window-option -g utf8 on
こんな感じで設定しているものです。
これに関しては現在はその辺うまいこと自動でやってくれてるようで必要ない、ということなので 単に削除すればOK。
Ref: tmux reports “unknown option: status-utf8” on startup · Issue #230 · tmux/tmux
1.X, 2.X用の共有
tmux.confでは(知る限り)条件分岐とか出来ないので あまり上手いこと出来ませんが、 メインの.tmux.confの最後に
source-file ~/.tmux.local.conf
とか書いて1.Xがインストールされてる環境では
# bind-keys
bind-key -t vi-copy C-h cursor-left
...
# UTF8
set-option -g status-utf8 on
set-window-option -g utf8 on
の様な内容、2.Xがインストールされてる環境では
# bind-keys
bind-key -T copy-mode-vi C-h send-keys -X cursor-left
の様な内容で.tmux.local.confを置いておく、とか。
source-file
でファイルが無いとエラーが出るので、
必要なくてもtouch .tmux.local.conf
しとく必要があります。
まだ結構初期状態だと1.6とかが入ってるサーバーも多くて真面目にtmuxを使おうと思うと結構面倒そう。
まとめ
多分これ以外にも変更が数多くあると思いますが とりあえず手元のtmux.confはこれだけで大丈夫でした。
変更後のものは以下のdotfilesにあります。
rcmdnk/dotfiles: setting files for bash
設定の変更以外にもちょっと見てみただけでも色々と新機能が入っていて やはりGNU screenよりも開発が盛んだな、という印象。
ただ、Window/Pane辺りの使い方というか概念がscreenの方が使いやすいので まだscreenを使っていこうと思っています。 まあ、ほとんど慣れによるものですが。
下に書いた優れてる点、とかも両方共色々とアップデートがあるので そのうち気が向いたらまとめ直してみたいと思います。
おまけ: lost server
tmuxを入れ直したりして立ち上げようと思ったら
$ tmux
lot server
$
となってどうやっても立ち上がらない状態になりました。
これは失敗したプロセスが残っている状態が原因である可能性があるので
$ ps -U$USER|grep tmux
164237 ? 00:00:00 tmux
として残ってたら
$ kill -kill 164237
とすればtmuxが立ち上がる様になります。