Как скопировать и вставить с помощью мыши с tmux

47

Я использую tmuxи OSX. При копировании и вставке из терминала tmuxя могу удерживать Optionи выбирать текст. Однако я не могу заставить текст оставаться внутри панели. Поэтому, когда я хочу скопировать текст, мне нужно либо повернуть панель в крайнее левое положение, либо увеличить ее, как показано ниже.

Это в дополнение к необходимости удерживать Optionклавишу - это боль. Я знаю, что могу войти в визуальный режим и использовать движения vim, но я предпочел бы использовать мышь. Кто-нибудь нашел обходной путь для этого?

введите описание изображения здесь введите описание изображения здесь

mbigras
источник
«Однако я не могу заставить текст оставаться внутри панели». Что вы под этим подразумеваете?
Блазард

Ответы:

38

Поместите этот блок кода в свой ~/.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"

Если вы используете iTerm на macOS, перейдите на iTerm2> Настройки> вкладка «Общие» и в разделе «Выбор» отметьте «Приложения в терминале могут иметь доступ к буферу обмена».

И если вы используете Linux и более новую версию 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"

(Вы также можете проверить https://github.com/gpakosz/.tmux для многих других опций tmux.)

GMaster
источник
1
Наконец то, что на самом деле работает! Копирование и вставка - самая неприятная вещь при попытке использовать tmux, я уже отказывался от этого, и фрагменты конфигурации, которые я пробовал, вели себя непоследовательно, большое спасибо.
Брено Сальгадо
1
Я использовал iterm в Mac и должен был активировать вкладку iTerm2> Настройки> «Общие», а в разделе «Выбор» «Приложения в терминале могут иметь доступ к буферу обмена». Ссылка: rushiagr.com/blog/2016/06/16/…
Руджота Шах
@RujootaShah Да, это правильно. Вы должны сделать это. Спасибо, что поделился.
GMaster
3
Благодарность! Работает как шарм. Мне нужно было установить sudo apt-get install -y xclip(Ubuntu Linux), хотя.
Петр
работает отлично, спасибо @GMaster
Luja Shrestha