当光标线高亮显示一行时,设置列表字符的可见性和/或颜色或在vim中隐藏cchar

当光标线高亮显示一行时,设置列表字符的可见性和/或颜色或在vim中隐藏cchar,vim,vim-syntax-highlighting,Vim,Vim Syntax Highlighting,我知道我可以使用setlist listchars=…来显示非文本和SpecialKey字符,以便突出显示不同类型的非文本字符。一般来说,这是直截了当的,有效的。但是它有一个视觉上的副作用,这让我感到不安——当光标线设置为on时,光标“悬停”在一条线上,列表字符以不同的颜色高亮显示。该问题已在中提到,似乎没有解决该行为的方法 因此,我开始使用隐藏功能,这给了我复杂的结果设置隐藏光标=n | | v | | i | | c允许我控制隐藏字符在哪些模式下可见。我希望能够始终看到隐藏的字符,因此我设置

我知道我可以使用set
list listchars=…
来显示
非文本
SpecialKey
字符,以便突出显示不同类型的非文本字符。一般来说,这是直截了当的,有效的。但是它有一个视觉上的副作用,这让我感到不安——当光标线设置为on时,光标“悬停”在一条线上,列表字符以不同的颜色高亮显示。该问题已在中提到,似乎没有解决该行为的方法

因此,我开始使用隐藏功能,这给了我复杂的结果<代码>设置隐藏光标=n | | v | | i | | c允许我控制隐藏字符在哪些模式下可见。我希望能够始终看到隐藏的字符,因此我设置了以下设置:

function! ConcealNonText()
    set conceallevel=1
    set concealcursor=nvic
    syntax match NonText / / conceal cchar=·
endfunction

augroup ConcealNonText
    autocmd!
    autocmd VimEnter * call ConcealNonText()
augroup END
因此,无论我当前处于哪种模式,它都会突出显示所有始终可见的空间。但还有一个令人不安的副作用——当我在视觉模式下标记线条或用光标线高亮显示线条时,高亮显示区域会在发现隐藏字符的地方被打断。请看屏幕截图:

选定区域的视觉模式:

带光标线的正常模式:

所以我想让我们试试
设置隐藏游标=ic
。这会导致不间断的亮显区域,但随后会隐藏角色


因此,对于我在本文开头提到的线程,是否有一个解决方案,或者在使用
set-hiddencursor=nvic
时,是否有任何方法可以使光标线和视觉选择区域不受干扰?

我相信您已经设置了“光标线”。
CursorLine
highlight组定义了同一行的突出显示。您可以
设置nocursorline
,(可以加快线路移动)或更改
CursorLine
高亮显示组fg颜色。

已在:@IngoKarkat Hm上提出了实现更改的补丁,看起来很有希望。我们将这个应用到vim中的机会有多大?您可以通过测试它并在vim_dev上共享您的结果来提高机会。这可能还需要一些时间,积压工作非常多。是否有某种合并窗口,或者vim dev是否一步一步地处理积压工作?只是问一下,因为我现在很忙。这是我目前在Vim中最烦人的事情。已经三年了,@IngoKarkat提到的建议从未发布过。甚至MacVim也没有提供解决方案。[否决票]这完全没有帮助。OP知道设置了cursorline,问题是删除cursorline fg属性并不能防止在特殊字符的情况下覆盖颜色。