【发布时间】:2014-03-26 23:48:46
【问题描述】:
我有一个列格式的文本文件,我想在 ViM 中突出显示它。我想像这样突出显示文件:
- 第 1-60 列:没有突出显示
- 第 61-65 列:红色
- 第 66-70 列:蓝色
- 第 71-80 列:绿色
我已经看到了基于正则表达式或关键字的突出显示示例,但我不确定如何仅基于文件的列来执行此操作。
这可能吗?
【问题讨论】:
我有一个列格式的文本文件,我想在 ViM 中突出显示它。我想像这样突出显示文件:
我已经看到了基于正则表达式或关键字的突出显示示例,但我不确定如何仅基于文件的列来执行此操作。
这可能吗?
【问题讨论】:
这实际上很容易做到,因为 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
【讨论】:
定义你自己的高组:
: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(),它支持最大。 3场比赛。如果您需要更多,请定义 syn pls。
添加截图
【讨论】: