Zurückholen des alten Verhaltens beim Kopieren und Einfügen in tmux mit der Maus


111

Dies ist, was ich in tmux getan habe, um zu kopieren und einzufügen (mit der Maus funktioniert die Tastatur anders und es interessiert mich nicht):

  1. Wählen Sie mit der linken Maustaste Text aus
  2. Fügen Sie Text mit der mittleren Schaltfläche ein

Ich habe mein Betriebssystem aktualisiert und dies hat eine neue tmux-Version bekommen. Ich habe meine .tmux.confKonfigurationsdatei nicht geändert .

Dies ist , was ich mit der aktuellen Version von dem zu tun haben tmux, 1.6(das verpackte pre in der neuesten Linux - Crunchbang kommt):

  1. Wählen Sie den Text mit der Maus, der linken Maustaste und der shift Taste aus
  2. Fügen Sie Text mit der mittleren Schaltfläche ein
  3. Das Terminal wird blockiert, ein kleiner Informationsbereich zeigt oben rechts im aktuellen Bereich einige Zahlen an (dh [0/24]wahrscheinlich etwas, das damit zusammenhängt, wie viele Zeichen eingefügt wurden), die mir wenig bedeuten und die ich nicht brauche / will (bearbeiten: es) scheint copy-modehier automatisch eingegeben zu werden)
  4. Ich muss die qTaste drücken, um wieder ein funktionsfähiges Terminal zu erhalten.

Das ist zu viel Aufwand für etwas, das ich Dutzende Male am Tag mache. Wie kann der alte Mechanismus wieder funktionieren?


2
in meinem Terminal st, Shift+ MouseMiddlefügt die Xselection wie traditionelles Verhalten. FWIW macht MouseMiddleohne Modifikator nichts.
Nabin-Info

Antworten:


84

Um die Standardkonfiguration zum Kopieren / Einfügen wiederherzustellen, müssen Sie (zumindest vorübergehend) die Mausunterstützung in tmux deaktivieren:

prefix : set -g mouse off

Wo prefixbefindet sich der tmux-Zugriffsschlüssel ( Ctrl+ Bstandardmäßig, sofern Sie ihn nicht neu zuordnen)? :Startet den Befehlsmodus und set -gsetzt den Parameter global.

Wenn der Mausmodus deaktiviert ist, funktionieren die von Ihrem Betriebssystem bereitgestellten Standardfunktionen zum Kopieren / Einfügen wie erwartet.

Möglicherweise möchten Sie auch den aktuellen Bereich maximieren, damit Sie problemlos mehrere Zeilen kopieren können.


Wenn Sie mit einer alten Version (vor 2.1) von tmux arbeiten, müssen Sie stattdessen Folgendes verwenden:

prefix : set -g mode-mouse off

Hier finden Sie weitere Details und einige praktische Tastenkombinationen, um all dies zu automatisieren:

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

Der Hauptschwerpunkt des oben verlinkten Artikels ist dieser Auszug aus .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
Wenn Sie über tmux 1.8 oder neuer verfügen, gibt es den integrierten Befehl Control-B z, mit dem der Zoomstatus des aktuellen Bereichs umgeschaltet wird. Also CB z, um diesen Bereich auf Vollbild zu zoomen, den gleichen Befehl erneut, um ihn wiederherzustellen. Dadurch entfällt die Notwendigkeit, die Tastenfolgen CB + und CB - am Ende der obigen Konfiguration zu definieren.
Dr. Jan

9
Wenn Sie über tmux 2.1 oder höher verfügen, sind alle mausbezogenen Befehle veraltet und durch 'mouse' ersetzt, mit der alles festgelegt wird. Um den Mausmodus standardmäßig zu deaktivieren, verwenden Sie 'setw -g mouse off'. Entfernen Sie alle Verweise auf "Modus-Maus", "Maus-Größenänderungsfenster", "Maus-Auswahlfenster" oder "Maus-Auswahlfenster".
Dr.-Jan

50
Der Mausmodus hat jedoch seine Vorteile: Er lässt mich scrollen. Gibt es eine Kombination von Einstellungen, mit denen ich mein Terminal wie ein normales verdammtes Terminal verwenden kann? Kopieren / Einfügen und Scrollen enthalten?
Mihai Danila

1
Gibt es eine andere Einstellung , die ich mit habe messed kann, da auf OSx (Sierra), optionhilft nicht. Durch Drehen mode-mouse offkann ich wie cmd+Ccmd+shift+C
gewohnt

3
Getestet mit tmux v3, eine Bindung zum Ein- und Ausschalten:bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

248
  1. Kopieren Sie den Text: Wählen Sie den Text aus und drücken Sie die Maus auch left-buttonmit der shiftTaste.
  2. Fügen Sie den Text mit der shiftTaste + einmiddle-button

30
Für OSX-Benutzer ist es der Optionsschlüssel, wie in diesem Blog-Beitrag beschrieben: awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse
pangratz

3
Nachdem Sie mit Shift + LMB Text ausgewählt haben, können Sie die Betriebssystemfunktionalität (in meinem Fall Strg-Umschalt-C) verwenden, um in die Nicht-X11-Zwischenablage zu kopieren.
Eugene Pankov

8
Das OP gibt eindeutig an, dass sie mit der Maus kopieren und einfügen möchten, ohne die Tastatur zu verwenden. Das Drücken Shift(oder der Optionstaste unter OSX) ist der älteste Trick im Buch und funktioniert bei den meisten Emulatoren, beantwortet jedoch nicht die ursprüngliche Frage.
Lqueryvg

1
@pangratz Die Verwendung des Optionsschlüssels funktioniert möglicherweise für iTerm-Benutzer, jedoch nicht für Benutzer des nativen Terminals.
Anishpatel

Vielen Dank für diese Problemumgehung! Es ist jedoch immer noch nicht optimal - Mausrad = Scrollen im Verlauf und alle anderen Mausfunktionen = Normal wären viel besser.
Torsten Bronger

36

Wenn Sie "-g mode-mouse on" setzen, können Sie diesen Trick ausführen:

Drücken Sie auf dem Mac die Taste "fn", wählen Sie dann Text aus und kopieren Sie mit der rechten Maustaste oder der Tastatur cmd + c.


4
Für mich scheint dies nur zu funktionieren, wenn ich nicht mit der Maus scrolle. Sobald ich mit der Maus
Paul

Sie können auch mit fn+Middle-Click
Spinup

10

Von hier aus geändert - ich verwende xclipstatt xselim Original:

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

Das funktioniert fröhlich für mich in tmux 2.5-rc2


Das funktioniert gut im Terminal, aber es verhält sich komisch, wenn ich versuche, vim
einzufügen

9

Verwenden Sie den <prefix>+mMausmodus ein- oder aus

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;"

Das hat perfekt für mich funktioniert. Vielen Dank. Ich wollte im Mausmodus scrollen können, aber das beeinträchtigte meine Fähigkeit, Text zu kopieren. Dies ermöglicht ein schnelles Umschalten, wenn Sie den Mausmodus deaktivieren möchten.
Bijan

6
Ich benutzebind m set-option mouse\; display-message "Mouse is now #{?mouse,on,off}"
Maxim Suslov

Benutzer möchte in der Lage sein, zu kopieren und einzufügen, noch nicht mehr .tmux.conf Anpassung!
Jack Wasey

6

Ich hatte Probleme, Christians Beispiel für Tmux 2 zum Laufen zu bringen. Ich glaube, einige Tippfehler. Ich habe das Folgende zum Laufen gebracht und ist ein bisschen einfacher zu lesen und stellt sowohl den globalen als auch den Fenstermodus ein. hth jemand. neuer Benutzer und tmux ist großartig!

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
Funktioniert bei mir. Getestet gegen tmux HEAD von Github (Stand gestern).
Lqueryvg

2
Damit dies funktioniert, musste ich die show-optionsZeile auf ändern tmux show-options -g | grep -q "mouse\\s*on"; \ . Dies liegt daran, dass der reguläre Ausdruckmouse.*on übereinstimmt, @scroll-in-moused-over-pane "on"der Teil des Plugins nhdaly / tmux-better-mouse-mode ist
Mandy Schoep

1
Einfachere Bindung, die im Grunde das Gleiche tut -bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

6

Für Benutzer von Mac + iTerm2 + tmux (Version> 2.1) :

Stellen Sie sicher, dass der Mausmodus in der tmux-Konfiguration eingestellt ist (fügen Sie einfach set -g mode-mouse on~ / .tmux.conf hinzu). So kopieren Sie den Text in ein Fenster:

  1. Drücken Sie option + commandund wählen Sie den zu kopierenden Text mit dem Mauszeiger aus. Es ist wie ein Bild zu beschneiden.
  2. Der ausgewählte Text hätte automatisch kopiert (keine Notwendigkeit command + c). Fügen Sie es einfach mit den üblichen Mitteln ein.

5

Yves Blusseau hat mir geholfen, herauszufinden, wie es funktioniert, aber auf meinem Computer (unter Windows 10 ) war das Verhalten etwas anders.

tmux 2.6

Mit aktivierter Maus ( :set -g mouse on)

Kopieren

  1. Halten Sie gedrückt Shiftund wählen Sie mit der Maus den Text aus, den Sie kopieren möchten
  2. Klicken Sie nun mit der rechten Maustaste, um den ausgewählten Text zu kopieren (ohne zu halten Shift).

Einfügen

  1. Halten Sie gedrückt Shiftund klicken Sie mit der rechten Maustaste, um den kopierten Text einzufügen

So einfach ist das. Genießen!


Das beste. Einfach und elegant.
schwacher

3

Dies ist eine modifizierte Version von Kaixuans Antwort , die mit Tmux 2.1 kompatibel ist.

`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;`"

Alle mode-mouseOptionen wurden zu einer mouseOption zusammengefasst und show-optionmussten durch ersetzt werdenshow-options


1
soll das auf der tmux.conf sein? ??
Arnold Roa

1
Wohin geht das?
statquant

@ArnoldRoa @statquant: Ja, das geht in die ~/.tmux.confDatei. Es bindet den <prefix>+mSchlüssel, um dieses Inline-Skript auszuführen.
Inblueswithu

0

in ~/.tmux.conf:

set -g mouse off

Dies bind r source-file ~/.tmux.confkann auch nützlich sein, damit Sie ctrl-d rbeispielsweise die Konfiguration neu laden können .


0

Basierend auf den anderen hier veröffentlichten Antworten habe ich eine übersichtliche Lösung erstellt, die mit (mindestens) tmux 2.8 und tmux 3.1 funktioniert .

Sie können ein- tmux mouse supportund ausschalten, indem Sie prefix- drücken M. Fügen Sie in die .tmux.confDatei folgende Zeile ein:

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

Dies wird angezeigt, mouse: 1wenn aktiviert und mouse: 0deaktiviert. Durch wiederholtes Drücken prefix- Mden Mausmodus zwischen umschalten auf und ab .

Siehe auch: Unterstützung für tmux-Mäuse

BEARBEITEN: Wenn eine Befehlsfehlermeldung angezeigtreturned 1 wird, müssen Sie stattdessen Folgendes für tmux 3.1 oder tmux 3.2 verwenden :

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

(Diese Lösung wurde bereits erwähnt)


-1

Ich verwende die folgende Bindung, um Text mit gedrückter linker Maustaste auszuwählen -

bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "/mnt/c/Windows/System32/clip.exe"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.