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

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

Я использую tmuxи OSX. При копировании и вставке из терминала с помощью 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"

Если вы используете iTerm на macOS, перейдите в 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

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

решение2

Добавьте эти 2 строки в ~/.tmux.conf

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
  • Вставьте в любое место (вне себя tmux) Ctrl+ 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'

Только не забудьте установить (как root) xclipпакет с pkg install xclip:-)

Еще несколько полезных советов:

  • Использование set -g repeat-time 0отключит следующие клавиши управления tmux, когда на одной панели находится редактор, а на других — оболочка или другие приложения, управляемые курсором. Обычно следующие клавиши управления курсором переключают между панелями на некоторое время, и это может отвлекать и раздражать в некоторых случаях, если вы хотите быстро использовать курсор на панели, на которую переключились.
  • Используйте set -g status-style fg=white,bg=greenдля легкого различения разных сеансов на разных удаленных машинах. Установка разных bgзначений на разных машинах поможет вам быстро определить машину, на которой вы хотите работать :-)

Связанный контент