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

  • 28
    いいね
  • 2
    コメント

問題

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ステップですね。