【问题标题】:ViM syntax highlighting based on column基于列的 ViM 语法高亮
【发布时间】:2014-03-26 23:48:46
【问题描述】:

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

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

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

这可能吗?

【问题讨论】:

    标签: vim syntax-highlighting


    【解决方案1】:

    这实际上很容易做到,因为 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
    

    【讨论】:

      【解决方案2】:

      定义你自己的高组:

      :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。

      添加截图

      【讨论】:

      • 使用匹配与区域(在其他答案中使用)的速度差异是多少?我的文件有几十万行,所以我需要尽可能快地匹配这种语法。
      • @jlconlin,你试过内置的基准测试方法吗?请参阅 h: syntime 以了解其出色而简洁的描述。
      猜你喜欢
      • 2012-08-16
      • 2014-11-14
      • 2019-02-22
      • 2011-01-19
      • 2015-08-08
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多