2

我想知道是否有一种语法可以在 vim/ex 中指定一系列相对行,它不会给出“无效范围”,而是尽可能多地获取行。

4

2 回答 2

2

没有内置方法,但您可以自己将相对范围解析为绝对行号,然后使用 和 将范围限制为可用:help min():help max()。因此,例如,以下相对范围:

:.-5,.+5 print

相当于:

:execute (line('.') - 5) . ',' . (line('.') + 5) 'print'

将转换为:

:execute max([1, (line('.') - 5)]) . ',' . min([line('$'), (line('.') + 5)]) 'print'
于 2018-11-05T12:15:14.627 回答
0

我的CmdlineSpecialEdits 插件(在许多其他插件中)有一个CTRL-G +映射,可以将相对范围更改.-5,.+5为绝对行号,反之亦然。它还更正了越界(<= 0 且大于最后一个行号)和向后范围的寻址。

于 2020-04-08T07:46:37.027 回答