如果我在 tmux(vi 模式)中切换到复制模式,并开始使用 选择文本v
,则直接位于光标下方的字符即使被选中也永远不会正确突出显示(即,如果我复制所选内容,该字符会显示在粘贴的文本)。
我希望 tmux 能够正确突出显示所有选定的字符,包括光标下的字符,就像在 vim 中一样。我怎样才能做到这一点?
我也在没有 vi 模式和空.tmux.config
文件的情况下测试了它,并且发生了同样的事情。所以我认为这与我的配置无关。
zsh
有趣的是,在 zsh Vi 模式下选择文本时也会发生同样的行为。
答案1
从tmux(1)
一个人可能会发现
Ss, Se Set or reset the cursor style ... `printf '\033[4 q'`
然而这仅适用于正常模式;默认光标返回复制模式。据猜测vim
,可能会在突出显示周围发出一个tput civis
,tput cnorm
配对以使光标暂时不可见。尽管 tmux 版本 3.3 添加了以下内容,但在有限的测试中 和 类似的内容copy-mode-match-style
似乎不会影响光标:
* Add cursor-style and cursor-colour options to set the default
cursor style and colour.
这需要修补到旧版本,或者将旧版本升级到 3.3 或更高版本。
tmux
有各种钩子,但after-copy-mode
可能不适合,因为该模式仍然必须显示光标,但每当突出显示开始时隐藏它(如果用户取消特定突出显示,则再次显示光标)。一个不太糟糕的选择可能是将复制模式光标更改为下划线,这使其大部分可见,同时大部分不会妨碍突出显示:
set-hook -g after-copy-mode 'set -p cursor-style underline'
cursor-colour
摆弄使其与值匹配也可能是有效的copy-mode-current-match-style
,尽管我还没有尝试过,因为我禁用了颜色。