基于列的ViM语法突出显示

jlc*_*lin 8 vim syntax-highlighting

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

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

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

这甚至可能吗?

Geo*_*edy 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
Run Code Online (Sandbox Code Playgroud)


Ken*_*ent 5

定义你自己的hi-groups:

:hi Red ctermfg=red guifg=red
:hi Green ctermfg=green guifg=green 
:hi Blue ctermfg=blue guifg=blue 
Run Code Online (Sandbox Code Playgroud)

执行此:

:match Red /\%>60v.*\%<66v/
:2match Blue /\%>65v.*\%<71v/
:3match Green /\%>70v.*\%<81v/
Run Code Online (Sandbox Code Playgroud)

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

添加截图

在此输入图像描述