it-swarm.com.de

Kopieren und Einfügen mit einer Maus mit tmux

Ich benutze tmux und OSX. Beim Kopieren und Einfügen vom Terminal mit tmux kann ich Option gedrückt halten und Text auswählen. Ich kann den Text jedoch nicht dazu bringen, im Bereich zu bleiben. Wenn ich also Text kopieren möchte, muss ich entweder den Bereich ganz links durchlaufen oder den Bereich wie unten gezeigt vergrößern.

Dies ist zusätzlich zu dem Halten der Taste Option ein Schmerz. Ich weiß, dass ich in den visuellen Modus wechseln und Vim-Bewegungen verwenden kann, um dorthin zu gelangen, aber ich hätte lieber eine Möglichkeit, meine Maus zu verwenden. Hat jemand eine Problemumgehung dafür gefunden?

(enter image description hereenter image description here

56
mbigras

Fügen Sie diesen Codeblock in Ihr ~/.tmux.conf. Dadurch wird die Mausintegration aktiviert, sodass Sie mit der Maus aus einem Bereich kopieren können, ohne zoomen zu müssen.

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"

Starten Sie danach Ihre tmux-Sitzung neu. Markieren Sie Text mit der Maus, aber lassen Sie die Maus nicht los. Drücken Sie nun die Eingabetaste, während der Text noch hervorgehoben und die Maus gedrückt ist. Der hervorgehobene Text verschwindet und wird in Ihre Zwischenablage kopiert. Lassen Sie nun die Maus los.

Abgesehen davon gibt es auch einige coole Dinge, die Sie mit der Maus tun können, wie nach oben und unten scrollen, den aktiven Bereich auswählen usw.

Wenn Sie eine neuere Version von tmux unter macOS verwenden, versuchen Sie Folgendes anstelle der oben genannten:

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

Wenn Sie iTerm unter macOS verwenden, gehen Sie zu iTerm2> Einstellungen> Registerkarte "Allgemein" und aktivieren Sie im Abschnitt "Auswahl" die Option "Anwendungen im Terminal können auf die Zwischenablage zugreifen".

Und wenn Sie Linux und eine neuere Version von tmux verwenden, dann

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

(Sie können auch https://github.com/gpakosz/.tmux für viele andere tmux-Optionen überprüfen.)

48
GMaster