tmux でマウスを使ってコピー&ペーストする方法

tmux でマウスを使ってコピー&ペーストする方法

私はtmuxOSX を使用しています。ターミナルからコピーして貼り付けるときに、tmuxを押したままOptionテキストを選択できます。ただし、テキストをペイン内にとどめることはできません。そのため、テキストをコピーする場合は、以下に示すように、ペインを左端に循環させるか、ペインをズームする必要があります。

これに加えて、キーを押し続けなければならないのもOption面倒です。ビジュアル モードに入り、vim の動きを使ってそこに到達できることはわかっていますが、マウスを使用する方法のほうが望ましいです。誰かこれに対する回避策を見つけましたか?

ここに画像の説明を入力してください ここに画像の説明を入力してください

答え1

このコード ブロックを に配置します~/.tmux.conf。これにより、マウス統合が有効になり、ズームせずにマウスでペインからコピーできるようになります。

set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -t vi-copy    C-WheelUpPane   halfpage-up
bind -t vi-copy    C-WheelDownPane halfpage-down
bind -t emacs-copy C-WheelUpPane   halfpage-up
bind -t emacs-copy C-WheelDownPane halfpage-down

# To copy, drag to highlight text in yellow, press Enter and then release mouse
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "pbcopy"

その後、tmux セッションを再起動します。マウスでテキストをハイライトしますが、マウスを放さないでください。テキストがハイライトされたままマウスが押された状態で、リターン キーを押します。ハイライトされたテキストは消え、クリップボードにコピーされます。マウスを放します。

これ以外にも、マウスを使って上下にスクロールしたり、アクティブなペインを選択したりといった便利な操作もいくつかあります。

を使用している場合tmuxの新しいバージョンmacOS では、上記の代わりに以下を試してください。

# macOS only
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi    C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-vi    C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down

# To copy, left click and drag to highlight text in yellow, 
# once you release left click yellow text will disappear and will automatically be available in clibboard
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"

macOS で iTerm を使用する場合は、iTerm2 > 環境設定 > 「一般」タブに移動し、「選択」セクションで「ターミナル内のアプリケーションがクリップボードにアクセスできる」にチェックを入れます。

そして、もしあなたがリナックスそして、新しいバージョンのtmuxの場合

# Linux only
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi    C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-vi    C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down

# To copy, left click and drag to highlight text in yellow, 
# once you release left click yellow text will disappear and will automatically be available in clibboard
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

Debian および Debian ベースのディストリビューション (Ubuntu、Kali) では、以下をインストールする必要がある場合がありますxclip

sudo apt-get install -y xclip

(こちらもご覧くださいgithub.com/gpakosz/.tmux からダウンロードできます。他の多くの tmux オプションについては、こちらを参照してください。

答え2

~/.tmux.confに次の2行を追加します。

set -g @plugin 'tmux-plugins/tmux-yank'
set -g mouse on

そしてプラグインをインストールするとうまくいきます。

https://github.com/tmux-plugins/tmux-yank

答え3

Ubuntu 20.04でうまくいったこと

  • マウスモードをオンにしています
  • 押したままテキストを選択Shift+ カーソルで選択
  • Shiftテキストを選択したらマウスを離します
  • テキストをコピーCtrl+ Shift+c
  • 任意の場所に貼り付けます(それ自体の外側tmuxCtrl+ v、これはシステムクリップボード上のテキストをコピーします

答え4

FreeBSD では、が設定されているy場合に、選択したテキスト上でマウスの左ボタンを押したまま、キー (vi スタイル) を使用して選択したテキストをコピーできます:-)mouse on~/tmux.conf

set -g mouse on
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'

必ず(ルートとして)xclipパッケージをインストールしてくださいpkg install xclip:-)

さらに役立つヒントをいくつかご紹介します。

  • 1 つのペインにエディターがあり、他のペインにシェルまたは他のカーソル操作アプリケーションがある場合、次の tmux コマンド キーがset -g repeat-time 0無効になります。通常、次のカーソル キーはしばらくの間ペイン間を切り替えますが、切り替えたペインでカーソルをすばやく使用したい場合には、気が散ったり煩わしく感じたりする場合があります。
  • 異なるリモート マシン上の異なるセッションを簡単に区別するために使用しますset -g status-style fg=white,bg=green。異なるマシンに異なるbg値を設定すると、作業するマシンをすばやく識別するのに役立ちます :-)

関連情報