rcmdnk's blog

Tmux 2: Productive Mouse-free Development

久しぶりにtmuxを立ち上げたら設定ファイルのエラーが色々出ていて どうやら1.Xの時に使っていたものがそのまま残っていたようなの 必要な部分をアップデートしました。

最後に使ったのは

普段はGNU screenを使っているのでtmuxはたまにいじる程度ですが、 ブログを見る限りでは2015年の頭の頃に使って以来まともに使ってないみたいです。

/blog/tags/tmux/

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が立ち上がる様になります。

Sponsored Links
Sponsored Links

« Evernoteで*を自動でリストに変換したりする機能を止める po: Parallel Operations, tmuxを使った複数サーバーの同時操作 »

}