当光标线突出显示一条线时,设置列表框的可见性和/或颜色或在vim中隐藏cchar

时间:2013-03-25 01:01:29

标签: vim vim-syntax-highlighting

我知道我可以使用set list listchars=...来显示NonTextSpecialKey个字符,以便突出显示不同类型的非文本字符。总的来说,这是直截了当的。但是它有一个视觉副作用让我感到不安 - 当光标线设置为listchars时,将光标“悬停”在一条线上会以不同的颜色突出显示。 this thread已经提到了这个问题,并且似乎没有解决这个问题的方法。

作为一个结果,我开始玩隐藏功能,这让我得到了不同的结果。 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 concealed characters in visual mode

带光标的普通模式:

Vim concealed characters in normal mode with cursorline

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

enter image description here

那么在本文开头我提到的线程是否存在某个地方以及某种方式解决方案,或者在使用set concealcursor=nvic时是否有任何方法可以使光标和视觉选择区域不中断?

1 个答案:

答案 0 :(得分:-1)

我相信你已经设置了'cursorline'。 CursorLine突出显示组定义了相同的突出显示。您set nocursorline,(可以加快线条移动)或更改CursorLine突出显示组fg颜色。

相关问题