在vim中,我想突出显示文件开头和结尾处的空行以及不止一个连续行。示例:
--- start of file
.
and 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')
如何匹配所有这些行并突出显示它们(最好是整行)?
答案 0 :(得分:2)
特殊的正则表达式原子@Unroll("Given I have #amount units with a price of #unitPrice each, then I should have a total amount of #expectedResult")
def "test collect"() {
when:
def result = amount * unitPrice
then:
result == expectedResult
where:
amount | unitPrice | expectedResult
1 | 1000 | 1000
2 | 2000 | 4000
3 | 3000 | 9000
}
(:help start-of-file
)和\%^
(:help end-of-file
)将在这里有所帮助。使用它们,您可以在缓冲区的边界处匹配空行,如下所示:
\%$
不幸的是,有一些限制:
call matchadd('EmptyLines', '\%^\n\+')
call matchadd('EmptyLines', '^\n\+\%$')
从模式中删除。然后,空的尾随行将通过在该行之前突出显示来指示。使用:help signs
,您可以突出显示空行的整个宽度,并在 sign列中添加其他指示。缺点是您不能简单地定义标志的模式。您必须将它们显式地放置在某些行上,并在缓冲区内容发生更改时调整该位置。这意味着要定义一些^
,并且要么表现不佳,要么接受短暂的延迟直到信号更新。 (它们旨在用于标记构建错误,这些错误不会经常更改,而只会按需更改。)
如果您的目标是避免出现这些空行,那么也可以使用视觉效果而不是视觉指示,也可以挂入:autocmd
事件并打印警告或完全中止BufWrite
(如果这些行是找到了。我的DeleteTrailingWhitespace plugin会这样做(但对于每行末尾的空格)。