如何使用 tmux 进行鼠标复制粘贴

如何使用 tmux 进行鼠标复制粘贴

我正在使用tmuxOSX。从终端复制和粘贴时,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"

如果在 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 选项。)

答案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++Shiftc
  • 粘贴任意位置(自身之外tmuxCtrl+ 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当您在一个窗格中有编辑器并且在其他窗格中有 shell 或其他光标操作的应用程序时,使用将禁用以下 tmux 命令键。通常,跟随光标键会在窗格之间切换一段时间,如果您想在已切换到的窗格中快速使用光标,这在某些情况下可能会分散注意力和烦人。
  • 用于set -g status-style fg=white,bg=green轻松区分不同远程计算机上的不同会话。在不同的机器上设置不同的bg值将帮助您快速识别您想要使用的机器:-)

相关内容