语法突出显示空虚拟列

时间:2015-03-27 15:12:19

标签: vim vim-syntax-highlighting

是否可以在syn match组中包含空虚拟列?我想通过给它一个黑色背景突出显示一个文本块,好像它在终端窗口中,但我希望“终端”总是80列宽,即使该行中的文本较短。

我尝试sync match cmdLineOutput '.*\%<81v',但只有在那里有实际字符时才匹配。我想我需要一些东西来替换匹配字符和空列的.

3 个答案:

答案 0 :(得分:2)

您可以尝试使用colorcolumn:

highlight ColorColumn ctermbg=black
let &colorcolumn=join(range(1,80), ',')

这会使前80列成为黑色背景,但会使屏幕重绘速度变慢。

请参阅:h colorcolumn获取更多选项。

答案 1 :(得分:2)

作为文本编辑器,除了文本之外不需要突出显示,所以你需要破解它。已经提到的'colorcolumn'适用于特定列,但适用于窗口中的所有行;如果您需要突出显示特定行,可以使用标志。不幸的是,那些突出显示特定行中的所有列(并另外显示符号列)。

:sign define demo linehl=Search
:exe "sign place 2 line=3 name=demo file=" . expand('%:p')

如果您确实需要特定行列,我认为您必须在这些行中添加尾随空格,然后您才能使用正常的:syn match

答案 2 :(得分:1)

colorcolumn选项大致可以满足您的需求。通常,它只突出显示一列,但您也可以指定列列表。在你的情况下,你可以通过

模仿你想要的东西
:set colorcolumn=81,82,83,84,85,... (how many you want)
:hi ColorColumn ctermbg=black