10

我知道我可以使用 setlist listchars=...来显示NonTextSpecialKey字符,以突出显示不同种类的非文本字符。一般来说,这是直截了当的并且有效。但它有一个让我感到不安的视觉副作用——当光标线设置为打开时,将光标“悬停”在一行上时,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

结果,无论我当前处于哪种模式,它都会突出显示始终可见的所有空间。但同样有一个令人不安的副作用 - 当我在可视模式下标记线条或用光标线突出显示线条时,突出显示区域在隐藏的地方被打断字符被找到。只需查看屏幕截图:

具有选定区域的可视模式:

Vim 在可视模式下隐藏字符

带光标线的普通模式:

Vim 在普通模式下用光标线隐藏字符

所以我想让我们试试set concealcursor=ic。这导致不间断的突出显示区域,但随后字符被隐藏。

在此处输入图像描述

那么我在这篇文章开头提到的线程是否有某个地方和某种解决方案,或者有什么方法可以使光标线和视觉选择区域在使用时不受干扰set concealcursor=nvic

4

1 回答 1

-1

我相信您设置了“光标线”。高亮组定义相同的CursorLine高亮。你set nocursorline,(可以加快线条移动)或更改CursorLine高亮组 fg 颜色。

于 2014-04-01T11:22:35.017 回答