Edited at

tmux 2.4にアップデートしたら"invalid or unknown command"エラーがでるようになった

More than 1 year has passed since last update.


問題

tmux2.3から2.4にアップデートしたところ,コピーモードに関するキーバインドで"invalid or unknown command"というエラーを吐くようになってしまいました...(泣

備忘録として解決策をここに記しておきます。

詳しい解決方法は解決への3ステップを御覧ください。


解決策

私は.tmux.confに次のようなコピーモードに関するキーバインドを記述しています。同じような設定をしている人も多いのではないでしょうか。


.tmux.conf

# 範囲選択後 prefix + y でコピー&コピーモード終了

bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"

tmux2.4ではvi-copyコマンドが使えなくなっています。また,copy-pipeだけではコピー後にコピーモードを終了してくれなくなっています。

次のように変更することでエラーを吐かなくなりました。


.tmux.conf

# 変更後

bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"

emacs派の人は-t vi-copyのところが-t emacs-copyになっていると思います。当てはまる方は-T copy-mode-viのところを-T copy-modeにするといいみたいです。


原因

tmuxバージョン2.4ではkey tableに区別がなくなり,これまで使えていたコマンドがリネームされたり削除されているっぽい。そのせいでバージョン2.3まで使えていたコマンドが使えなくなったみたいです。


key table名前変更による問題を解決する詳しい方法(追記 2017/5/2)

コメントで@revivreさんに教えていただいた詳しい解決方法を追記します。@revivreさん,ありがとうございました。


解決への3ステップ


  1. フラグ-t-Tに変更する


  2. vi-<name><name>-mode-viに変更する

  3. 実行するコマンドの前にsend -Xもしくはsend-keys -Xを追加する

<name>にはcopy, edit, chooseなどのtableが入ります。

確かに解決策で行ってることは,この3ステップですね。