【问题标题】:Syntax highlight empty virtual columns语法高亮显示空的虚拟列
【发布时间】:2015-03-27 15:12:19
【问题描述】:

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

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

【问题讨论】:

    标签: vim vim-syntax-highlighting


    【解决方案1】:

    你可以试试colorcolumn:

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

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

    有关更多选项,请参阅 :h colorcolumn。

    【讨论】:

    • 我可能不清楚这一点,但我只希望在某些行(匹配发生的地方)上使用它,所以我认为这不会起作用。还是谢谢!
    • 很好,我不知道joinrange
    【解决方案2】:

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

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

    如果您确实需要特定行 列,我认为您必须在这些行中添加尾随空格,然后您就可以使用普通的 :syn match 了。 p>

    【讨论】:

      【解决方案3】:

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

      :set colorcolumn=81,82,83,84,85,... (how many you want)
      :hi ColorColumn ctermbg=black
      

      【讨论】:

      • 我可能不清楚这一点,但我只希望在某些行(匹配发生的地方)上使用它,所以我认为这不会起作用。还是谢谢!
      猜你喜欢
      • 2010-11-26
      • 2016-06-09
      • 1970-01-01
      • 2011-08-26
      • 2011-09-22
      • 2016-08-16
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多