Tmux 鼠标选择重置滚动位置

Tmux 鼠标选择重置滚动位置

当我在窗格中滚动时,当前的 shell 提示符不再显示在屏幕上,然后我选择任何内容(例如,当我向同事解释某事时,只需指向一行),结果是,当我在选择后释放鼠标按钮时,滚动位置将重置为输出的底部。因此,如果您不在输出的底部,则基本上无法在一个滚动位置多次选择任何内容。这很不愉快,我可以修复它吗?

答案1

~/.tmux.conf由于这个问题,我最近不得不更新我的。

这个答案或者这个 github 问题了解更多背景信息,但对我而言有帮助的关键部分是这一行:

unbind -T copy-mode MouseDragEnd1Pane

注意:这解决了选择时焦点跳回到底部的问题,但引入了一个新问题:选择然后滚动导致选择内容随滚动位置移动,所以如果我只想选择一个单词或一行,然后滚动到其他地方,选择内容就会扩大。

如果我找到第二个问题的解决方案,我会更新这个答案。

答案2

我在 Debian 9 上,我的 tmux 是版本2.3-4

这是关于这些默认绑定:

bind-key -t vi-copy    MouseDragEnd1Pane copy-selection
bind-key -t emacs-copy MouseDragEnd1Pane copy-selection

这取决于mode-keys选项 ( vi/ emacs),在任一情况下适用哪一个。没关系,无论如何我们都会修复它们。

copy-selection在手册中没有很好的记录,但是有一个示例使用copy-selection -x但没有解释什么-x意思。我试过了,似乎解决了你的问题。将这些行添加到你的~/.tmux.conf

bind-key -t vi-copy    MouseDragEnd1Pane copy-selection -x
bind-key -t emacs-copy MouseDragEnd1Pane copy-selection -x

重新启动 tmux 服务器或者 source 文件(prefix:source ~/.tmux.confEnter)。

答案3

我在以下人员的帮助下找到了解决方案unix stackexchange 上的这个答案tmux-yank 源代码

# Only add this line if using tmux-yank
set -g @yank_with_mouse off

将“reattach-to-user-namespace pbcopy”替换为clipboard_copy_command true 这里. (可以在心里评估)

例如 Windows 上的“cat | clip.exe”

bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe "reattach-to-user-namespace pbcopy" \; send -X clear-selection
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe "reattach-to-user-namespace pbcopy" \; send -X clear-selection

相关内容