copy-pipe を使うようキーバインドを設定します。

bind-key -T copy-mode-vi Enter send-keys -X copy-pipe

プラグイン tmux-yank を使用している場合は以下を設定します。

set -g @yank_action 'copy-pipe'

tmux 3.3a, tmux-yank 2.3.0 で確認しました。

キーバインドを確認する

コマンド tmux list-key で、現在のキーバインドが確認できます。

# デフォルト状態の tmux キーバインド一覧
❯ tmux -f /dev/null list-key | rg 'copy-pipe'
bind-key    -T copy-mode    C-k                  send-keys -X copy-pipe-end-of-line-and-cancel
bind-key    -T copy-mode    C-w                  send-keys -X copy-pipe-and-cancel
bind-key    -T copy-mode    MouseDragEnd1Pane    send-keys -X copy-pipe-and-cancel
bind-key    -T copy-mode    DoubleClick1Pane     select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel
bind-key    -T copy-mode    TripleClick1Pane     select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel
bind-key    -T copy-mode    M-w                  send-keys -X copy-pipe-and-cancel
bind-key    -T copy-mode-vi C-j                  send-keys -X copy-pipe-and-cancel
bind-key    -T copy-mode-vi Enter                send-keys -X copy-pipe-and-cancel
bind-key    -T copy-mode-vi D                    send-keys -X copy-pipe-end-of-line-and-cancel
bind-key    -T copy-mode-vi MouseDragEnd1Pane    send-keys -X copy-pipe-and-cancel
bind-key    -T copy-mode-vi DoubleClick1Pane     select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel
bind-key    -T copy-mode-vi TripleClick1Pane     select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel
bind-key    -T root         DoubleClick1Pane     select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -H ; send-keys -X select-word ; run-shell -d 0.3 ; send-keys -X copy-pipe-and-cancel }
bind-key    -T root         TripleClick1Pane     select-pane -t = \; if-shell -F "#{||:#{pane_in_mode},#{mouse_any_flag}}" { send-keys -M } { copy-mode -H ; send-keys -X select-line ; run-shell -d 0.3 ; send-keys -X copy-pipe-and-cancel }

vi モードのデフォルトでは Enter にコピー機能が割り当てられていて、コマンドは copy-pipe-and-cancel となっています。 キーバインドを上書きして copy-pipe に変更すれば、コピーモードから抜けないようになります。

プラグイン tmux-yank について

コピー機能は OS 特有の対応が必要な場合があります。

現在は不要になりましたが、 tmux 2.6 以前は macOS では reattach-to-user-namespace が必要で、 これを使うようなキーバインドを設定する必要がありました。 Linux では xselxclip を使う、 WSL では clip.exe を使うなど OS によって異なります。

tmux-yank はこの問題にまとめて対処するプラグインです。 インストールすると、使用している環境に合わせたコマンドでいくつかのキーバインドが追加されます。

このプラグインにも copy-pipe に変更する方法が用意されていて、記事冒頭に記載の方法で変更できます。

参考にした記事