MacOSのiTerm2のtmuxでマウスでテキストを選択すると、選択したテキストがクリップボードにコピーされます。追加のボタンをクリックする必要はありません。必要なテキストを選択するだけで完了です。
MacOSのterminal.appでtmuxをテストしましたが、そこで機能しません-選択範囲をクリップボードにコピーするには、y
を押す必要があります。
マウスバインディングがあると思った(MouseOnSelection
のようなMouseDown1Pane
)ですが、ウェブ上で役立つものを見つけることができませんでしたman tmux
。
Ubuntu 16.10で、できればGnome端末で同様の動作をさせる方法はあるのでしょうか。
私のtmuxドットファイルは利用可能です ここ(リンク) 。
Tmux 2.4+とviコピーモードバインディングおよび xclip :
set-option -g mouse on
set-option -s set-clipboard off
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -se c -i"
古いtmuxバージョン、emacsコピーモードバインディング(デフォルト)、または非Xプラットフォーム(つまり、xclipなし)については、以下の説明を参照してください。
説明:まず、tmuxがマウスをキャプチャしてマウスイベントをバインドできるように、マウスオプションを有効にする必要があります。
set-option -g mouse on
Gnome-terminalはxtermエスケープシーケンスを使用したクリップボードの設定をサポートしていないため、set-clipboard
オプションをオフにする必要があります。
set-option -s set-clipboard off
このオプションは、iTerm2でデフォルトでサポートおよび有効化されている場合があり(tmuxマニュアルのset-clipboard
を参照)、そこでの動作を説明します。
次に、コピーモードMouseDragEnd1Pane
"key"をバインドできます。つまり、ペイン内でクリックしてドラッグした後、最初のマウスボタンが離されたときに、現在のコピーモードの選択(デフォルトのバインドによって行われる)をとるtmuxコマンドにバインドします。 for MouseDrag1Pane
)をパイプしてシェルコマンドに渡します。このtmuxコマンドは、tmux 2.4より前はcopy-pipe
で、それ以降 変更 からsend-keys -X copy-pipe[-and-cancel]
に変更されました。シェルコマンドについては、システムクリップボードの内容をパイプ処理されたものに設定するものが必要です。 xclipは、次のコマンドでこれを行うために使用されます。 X以外のプラットフォームでの以下の"xclip -selection clipboard -i"
の同等の置き換えは "wl-copy"
(Wayland)、"pbcopy"
(macOS)、"clip.exe"
(Windows、WSL)です。 )、および"cat /dev/clipboard"
(Cygwin、MinGW)。
Tmux 2.4以降:
# For vi copy mode bindings
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
Tmux 2.2から2.4:
# For vi copy mode bindings
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
Tmux 2.2より前:
新しいmode-mouse
オプションをon
に設定することにより、マウスドラッグのサポートがTmux 1.3で最初に追加された後にコピーします。 Tmux 2.1は、マウスサポートをおなじみのマウスキーバインディングに変更しましたが、2.2で導入されたDragEnd
バインディングがありませんでした。したがって、2.2より前では、マウスドラッグでシステムクリップボードを設定する唯一の方法は、xtermエスケープシーケンスの組み込みの使用(set-clipboard
オプション)を使用することでした。これは、GNOMEターミナルなど、set-clipboard
をサポートしていないターミナルでドラッグアンドコピー動作を実現するには、少なくともtmux 2.2に更新する必要があることを意味します。
受け入れられた回答の拡張として、マウスボタンを離したときに邪魔になるとコピーモードが終了することがよくあります(これがcopy-pipe-and-cancel
で発生します)。参照: https://github.com/tmux/tmux/issues/14 。したがって、新しいtmux(私は2.6を使用)では、copy-pipe
をclear selection
と一緒に使用して選択にコピーできますが、コピーモードは終了しません。
bind-key -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe "xclip -selection clipboard -i" \; send -X clear-selection
さらに別の拡張機能は、Shift
キーの使用です。
Shift
を押しながら、マウスでテキストを選択します。これで、標準の右クリックメニューが表示され(そのままにしておくか、もう一度Shift
を押す)、Ctrl+Shift+C
とCtrl+Shift+V
を使用してコピーして貼り付けることができます。コピーされたテキストは、システムクリップボードでも利用できます。
Ubuntu 18.04.1
をtmux 2.6
でテストしました。
ソース: https://forum.upcase.com/t/tmux-ctrl-shift-c-and-ctrl-shift-v-bindings/1208 。
両方の回答を拡張してmsys2からWindowsクリップボードにコピーします(そして選択をクリアします):
# For vi copy mode bindings
bind -Tcopy-mode-vi MouseDragEnd1Pane send -X copy-pipe "cat > /dev/clipboard" \; send -X clear-selection
# For emacs copy mode bindings
bind -Tcopy-mode MouseDragEnd1Pane send -X copy-pipe "cat > /dev/clipboard" \; send -X clear-selection