当我在窗格中滚动时,当前的 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.conf
Enter)。
答案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