Tmux vi复制模式选择-光标下的字符不突出显示

Tmux vi复制模式选择-光标下的字符不突出显示

如果我在 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,尽管我还没有尝试过,因为我禁用了颜色。

相关内容