マウスでtmuxの古いコピー貼り付け動作を取り戻す


111

これは、コピーして貼り付けるためにtmuxで使用していたものです(マウスを使用すると、キーボードの動作が異なり、興味がありません)。

  1. マウスでテキストを選択し、左ボタンを押す
  2. 中ボタンでテキストを貼り付け

OSをアップグレードしましたが、これは新しいtmuxバージョンを取得しています。.tmux.conf設定ファイルを変更していません。

これは私が現在のバージョンで何をすべきかであるtmux1.6(最新のcrunchbangにlinuxにプリパッケージ来ています):

  1. マウスでテキストを選択し、左ボタンを押し shiftキーを押す
  2. 中ボタンでテキストを貼り付け
  3. 端末がブロックされ、小さな情報領域に現在のペインの右上にいくつかの数字が表示されます(つまり[0/24]、貼り付けられた文字の数に関連している可能性があります)。これは、私にとってほとんど意味がなく、私は必要ありません/必要ありません(編集:それ:copy-modeここに自動的に入力されるようです)
  4. q機能する端末を再び取得するには、キーを押す必要があります。

これは、私が1日に何十回も行うことに煩わしすぎます。古いメカニズムを再び機能させる方法は?


2
私の端末ではstShift+ MouseMiddleは従来の動作のようにXselectionを貼り付けます。FWIW、MouseMiddle修飾子なしでは何もしません。
nabin-info 2017

回答:


84

デフォルトのコピー/貼り付け構成に戻すには、(少なくとも一時的に)tmux内のマウスサポートをオフにする必要があります。

prefix : set -g mouse off

prefixtmuxアクセスキーはどこにあります(再マッピングしない限り、デフォルトではCtrl+ B)。:コマンドモードを開始しset -g、パラメーターをグローバルに設定します。

マウスモードをオフにすると、オペレーティングシステムが提供する標準のコピー/貼り付け機能が期待どおりに動作します。

あなたがしたいかもしれない他のものは現在のペインを「最大化」するので、簡単に複数の行をコピーできます。


古い(2.1より前の)バージョンのtmuxを使用している場合は、代わりに以下を使用する必要があります。

prefix : set -g mode-mouse off

詳細と、これをすべて自動化するためのいくつかの便利なキーバインディングがあります。

http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

上記にリンクされている記事の主な目的は、.tmux.confからのこの抜粋です。

# disable mouse control by default - change 'off' to 'on' to enable by default.
setw -g mode-mouse off
set-option -g mouse-resize-pane off
set-option -g mouse-select-pane off
set-option -g mouse-select-window off
# toggle mouse mode to allow mouse copy/paste
# set mouse on with prefix m
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'
# set mouse off with prefix M
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'
# zoom this pane to full screen
bind + \
    new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
    swap-pane -s tmux-zoom.0 \;\
    select-window -t tmux-zoom
# restore this pane
bind - \
    last-window \;\
    swap-pane -s tmux-zoom.0 \;\
    kill-window -t tmux-zoom

13
tmux 1.8以降を使用している場合、組み込みコマンドControl-B zがあり、現在のペインのズーム状態を切り替えます。そのため、CB zを使用してこのペインを全画面にズームし、同じコマンドを再度使用して復元します。これにより、上記の構成の最後にCB +およびCB-キーシーケンスを定義する必要がなくなります。
dr-jan 2015

9
tmux 2.1以降を使用している場合、すべてのマウス関連コマンドは廃止され、すべてを設定する「マウス」に置き換えられました。したがって、デフォルトでマウスモードを無効にするには、「setw -g mouse off」を使用します。「mode-mouse」、「mouse-resize-pane」、「mouse-select-pane」、または「mouse-select-window」への参照をすべて削除します。
dr-jan 2016年

50
ただし、マウスモードをオンにすると、スクロールできるという利点があります。端末を通常の端末のように使用できる設定の組み合わせはありますか?コピー/貼り付けとスクロールが含まれていますか?
Mihai Danila

1
上ので、私は、と混乱しているかもしれないいくつかの他の設定があるOSx (Sierra)option助けにはならないが。回すとmode-mouse off通常のように選択できますが、クリップボードにコピーできません(cmd+Cまたはcmd+shift+C何もしないか、エラーベルを鳴らすか、カラーセレクターを表示します)
dwanderson

3
tmux v3でテスト、1つのバインディングでオンとオフを切り替える:bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

248
  1. テキストをコピーする:テキストを選択し、キーを押しながらマウスleft-buttonshift押します。
  2. shiftキー+でテキストを貼り付けますmiddle-button

30
OSXユーザーにとっては、このブログ投稿で説明されているように、オプションキーです:awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse
pangratz

3
実際、Shift + LMBでテキストを選択した後、OS機能(私の場合はCtrl-Shift-C)を使用して非X11クリップボードにコピーできます。
Eugene Pankov、2015

8
OPは、キーボードを使用せずにマウスでコピーアンドペーストできるようにしたいと明確に述べています。押すShift(またはOSXのオプションキー)は本の中で最も古いトリックであり、ほとんどのエミュレーターで機能しますが、元の質問には答えません。
Lqueryvg

1
@pangratzオプションキーの使用はiTermユーザーには機能しますが、ネイティブターミナルのユーザーには機能しません。
anishpatel

この回避策をありがとう!それでもまだ最適ではありません–マウスホイール=履歴をスクロールし、他のすべてのマウス機能=通常の方がはるかに優れています。
Torsten Bronger

36

「set -g mode-mouse on」の場合、このトリックを実行できます。

Macでは、「fn」ボタンを押してから、テキストを選択し、マウスの右クリックまたはキーボードのcmd + cでコピーします。


4
私にとっては、これはマウスでスクロールしない場合にのみ機能するようです。マウスでスクロールすると、これが機能しなくなります
Paul

fn+で貼り付けることもできますMiddle-Click
スピンアップ

10

ここから変更- オリジナルのxclip代わりに使用しますxsel

bind -T root MouseDown2Pane run -b "xclip -o | tmux load-buffer - && tmux paste-buffer -s ' '"

これは私にとって楽に働いています tmux 2.5-rc2


これはターミナルではうまく機能しますが、vimに貼り付けようとすると奇妙な動作をします
Tropilio

9

使用する <prefix>+mマウスモードのオン/オフ切り替える

bind m run "if [[ `tmux show-option -w | grep mode-mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mode-mouse \$toggle &> /dev/null; for cmd in mouse-select-pane mouse-resize-pane mouse-select-window; do tmux set-option -g \$cmd \$toggle &> /dev/null; done;"

これは私にとって完璧に機能しました。本当にありがとう。マウスモードでスクロールできるようにしたかったのですが、それによってテキストをコピーする機能が損なわれていました。これにより、マウスモードを無効にする場合に迅速に切り替えることができます。
Bijan 2015

6
私が使用していますbind m set-option mouse\; display-message "Mouse is now #{?mouse,on,off}"
Maxim Suslov、

ユーザーは、.tmux.confのカスタマイズではなく、コピーと貼り付けができるようにしたいと考えています!
Jack Wasey

6

クリスチャンの手本をTmux 2で機能させるのに問題がありました。以下が機能し、少し読みやすく、グローバルモードとウィンドウモードの両方を設定します。hth誰か。新しいユーザーとtmuxは素晴らしいです!

bind m run "\
    tmux show-options -g | grep -q "mouse\\s*on"; \
    if [ \$? = 0 ]; \
    then  \
        toggle=off;  \
    else  \
        toggle=on;  \
    fi;  \
    tmux display-message \"mouse is now: \$toggle\";  \
    tmux set-option -w mouse \$toggle; \
    tmux set-option -g mouse \$toggle; \
    "

1
私のために働く。githubのtmux HEADに対してテストされています(昨日現在)。
Lqueryvg

2
この作業を行うには、show-options行をに変更する必要がありましたtmux show-options -g | grep -q "mouse\\s*on"; \ 。これは、プラグインnhdaly / tmux-better-mouse-modeの一部である正規表現がmouse.*on一致@scroll-in-moused-over-pane "on"するためです
Mandy Schoep

1
基本的に同じことを行うより単純なバインディングbind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

6

Mac + iTerm2 + tmux(バージョン> 2.1)のユーザーの場合:

マウスモードがtmux configで設定されていることを確認します(set -g mode-mouse on〜/ .tmux.confに追加するだけです)。次に、ペイン内のテキストをコピーします。

  1. を押しoption + commandて、マウスカーソルを使用してコピーするテキストを選択します。写真をトリミングするようなものです。
  2. 選択したテキストは自動的にコピーされます(の必要はありませんcommand + c)。通常の方法で貼り付けてください。

5

Yves Blusseauは、それがどのように機能するかを理解するのに役立ちましたが、私のマシン(Windows 10を実行している)では、動作が少し異なりました。

tmux 2.6

アクティブ化されたマウス(:set -g mouse on

コピーする

  1. 押し続けてShift、コピーしたいテキストをマウスで選択します
  2. 右クリックして、選択したテキストをコピーします(を押さずにShift

ペースト

  1. 押したままShift右クリックして、コピーしたテキストを挿入します

そのような単純な。楽しい!


最高の。シンプルでエレガント。
弱々しい

3

これは、Tmux 2.1と互換性のあるKaixuan の回答の修正バージョンです。

`bind m run "if [[ `tmux show-options -w | grep mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mouse \$toggle &> /dev/null;`"

すべてのmode-mouseオプションが1つのmouseオプションに結合さshow-optionれ、交換する必要がありましたshow-options


1
これはtmux.confにあると思われますか???
アーノルドロア2016

1
これはどこへ行くの?
statquant

@ArnoldRoa @statquant:はい、これは~/.tmux.confファイルに入ります。<prefix>+mインラインスクリプトを実行するためのキーをバインドしています。
inblueswithu 2017

0

~/.tmux.conf

set -g mouse off

持つbind r source-file ~/.tmux.confあなたが行うことができますので、あまりにも有用である可能性があるctrl-d rインスタンスの設定をリロードします。


0

ここに掲載されている他の回答に基づいて、(少なくとも) tmux 2.8およびtmux 3.1 動作する簡潔なソリューションを作成しました。

- tmux mouse supportを押すと、オンとオフを切り替えることができます。で、ファイル、この行を含めます。prefixM.tmux.conf

bind-key -T prefix m run "m=$(tmux show -g mou|grep -q on;echo $?);tmux set -g mou $m;tmux display mouse:\$m"

これはmouse: 1、有効なmouse: 0場合と無効な場合に表示されます。繰り返し押すとprefix- Mの間でマウスモードを切り替えますオフ

参照:tmuxマウスのサポート

編集:コマンドreturned 1エラーメッセージが表示された場合は、tmux 3.1またはtmux 3.2の代わりに以下を使用する必要があります。

bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'

(このソリューションは以前に言及されました)


-1

次のバインディングを使用して、マウスの左ボタンを押した状態でテキストを選択します-

bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "/mnt/c/Windows/System32/clip.exe"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.