0

我想编写一些syn命令来在当前光标行的任一侧选择一定数量的行,这样,例如,在我放置光标的地方总是有一个带有特定突出显示的 3 行的“视口” .

我认为如果可能的话,它将涉及\%#原子,但我不确定如何实际使用它来进行匹配。

所以基本上,我想这样做:

:syn match ViewPort <SOME-PATTERN-PROBABLY-INVOLVING-%#>
:hi ViewPort guibg=pink

例如。我正在寻找的效果与 非常相似cursorline,但不仅仅是当前行,比如当前行加上上面的一个和下面的一个(或者两个上面和下面两个,等等)。

我的最终目标是拥有一种“安全”的语法,使大多数文本具有相同的前景色和背景色,使其实际上是不可见的,并且一次只有一个文本“可见”的小窗口。

4

1 回答 1

1

之所以引入该'cursorcolumn'选项,是因为之前使用语法 / 模拟此类的尝试:match缓慢且不充分。您的要求看起来像一个超大的游标线,因此很可能会失败。

特别是,\%#当前光标位置的原子不会自动更新,如其帮助中所述:

警告:当使用模式后移动光标时,结果无效。Vim 不会自动更新匹配。这与语法高亮和“hlsearch”特别相关。

所以你必须使用:autocmd CursorMoved,它可能会慢。

于 2013-10-16T07:24:52.990 回答