Tmux

如何使用 tmux 滑鼠複製和粘貼

  • September 16, 2021

我正在使用tmux和 OSX。從終端複製和粘貼時,tmux我可以按住Option並選擇文本。但是我無法讓文本留在窗格內。因此,當我想複製文本時,我需要將窗格循環到最左側,或者縮放窗格,如下所示。

除了必須按住Option鍵之外,這也是一種痛苦。我知道我可以進入視覺模式並使用 vim 動作來到達那裡,但我寧願有辦法使用我的滑鼠。有沒有人找到解決方法?

在此處輸入圖像描述 在此處輸入圖像描述

將此程式碼塊放入您的~/.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 會話。用滑鼠突出顯示一些文本,但不要鬆開滑鼠。現在,當文本仍然突出顯示並按下滑鼠時,按輸入鍵。突出顯示的文本將消失並複製到剪貼板。現在鬆開滑鼠。

除此之外,您還可以使用滑鼠進行一些很酷的操作,例如上下滾動、選擇活動窗格等。

如果您在 macOS 上使用更新版本的 tmux,請嘗試以下操作,而不是上述操作:

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

如果在 macOS 上使用 iTerm,請轉到 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"

在 Debian 和基於 Debian 的發行版(Ubuntu、Kali)中,您可能需要安裝xclip

sudo apt-get install -y xclip

(您還可以查看https://github.com/gpakosz/.tmux了解許多其他 tmux 選項。)

引用自:https://unix.stackexchange.com/questions/318281