基于列的ViM语法突出显示

时间:2014-03-26 15:20:01

标签: vim syntax-highlighting

我有一个列格式的文本文件,我想在ViM中突出显示。我想突出显示这样的文件:

  • 第1-60栏:无突出显示
  • 第61-65栏:红色
  • 第66-70栏:蓝色
  • 第71-80栏:绿色

我已经看到了基于正则表达式或关键字突出显示的示例,但我不确定如何仅基于文件列来执行此操作。

这甚至可能吗?

2 个答案:

答案 0 :(得分:8)

实际上这很容易,因为vim具有与特定列号匹配的模式语法:

syn region Red start="\%61c" end="\%66c"
syn region Blue start="\%66c" end="\%71c"
syn region Green start="\%71c" end="\%81c"

hi Red ctermfg=Red guifg=Red
hi Blue ctermfg=Blue guifg=Blue
hi Green ctermfg=Green guifg=Green

答案 1 :(得分:5)

定义你自己的hi-groups:

:hi Red ctermfg=red guifg=red
:hi Green ctermfg=green guifg=green 
:hi Blue ctermfg=blue guifg=blue 

执行此操作:

:match Red /\%>60v.*\%<66v/
:2match Blue /\%>65v.*\%<71v/
:3match Green /\%>70v.*\%<81v/

请注意,我使用matchadd()它支持max。 3场比赛。如果您需要更多,请定义同义词。

添加屏幕截图

enter image description here