我知道我可以使用 setlist listchars=...
来显示NonText
和SpecialKey
字符,以突出显示不同种类的非文本字符。一般来说,这是直截了当的并且有效。但它有一个让我感到不安的视觉副作用——当光标线设置为打开时,将光标“悬停”在一行上时,listchars
会以不同的颜色突出显示。该线程中已经提到了该问题,并且似乎没有解决该行为的解决方案。
结果,我开始使用隐藏功能,这给了我不同的结果。set concealcursor=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
结果,无论我当前处于哪种模式,它都会突出显示始终可见的所有空间。但同样有一个令人不安的副作用 - 当我在可视模式下标记线条或用光标线突出显示线条时,突出显示区域在隐藏的地方被打断字符被找到。只需查看屏幕截图:
具有选定区域的可视模式:
带光标线的普通模式:
所以我想让我们试试set concealcursor=ic
。这导致不间断的突出显示区域,但随后字符被隐藏。
那么我在这篇文章开头提到的线程是否有某个地方和某种解决方案,或者有什么方法可以使光标线和视觉选择区域在使用时不受干扰set concealcursor=nvic
?