代码之家  ›  专栏  ›  技术社区  ›  watain

突出显示文件开头和结尾的空行以及多个空行

vim
  •  0
  • watain  · 技术社区  · 7 年前

    --- start of file
    .
    an empty line just before this line (at the beginning of the file)
    more than one empty line will follow
    .
    .
    empty lines at the end of file will follow
    .
    .
    --- end of file
    

    在上面的例子中,带点的线应该高亮显示。

    我试着用下面的表达式来匹配这些行,不幸的是没有运气:

    call matchadd('EmptyLines', '\n\s\*\n\s\*\n')
    

    如何匹配所有这些行并突出显示它们(最好是整行)?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ingo Karkat    7 年前

    \%^ ( :help start-of-file )以及 \%$ :help end-of-file )在这里会有帮助的。使用它们,可以在缓冲区的边界处匹配空行,如下所示:

    call matchadd('EmptyLines', '\%^\n\+')
    call matchadd('EmptyLines', '^\n\+\%$')
    

    不幸的是,有一些 :

    • 你只能匹配那里的内容,空行中的内容不多。Vim只会高亮显示一个单元格宽度(表示换行符)。
    • 在最后一行中,没有突出显示任何内容。如果你想看到一个空的最后一行的任何迹象,你可以把 ^ 从图案上看。然后,空的尾行将通过在该行之前高亮显示来指示。

    实施备选方案

    使用 :help signs 标志柱 :autocmd s、 要么表现不佳,要么接受短暂的延误,直到迹象更新(它们用于标记不经常更改且仅在需要时更改的构建错误。)


    BufWrite 事件并打印警告或完全中止 :write 如果找到这样的线。我的 DeleteTrailingWhitespace plugin