选择相对范围,忽略无效的行号

时间:2018-11-02 18:43:10

标签: vim ex

我想知道在vim / ex中是否存在一种用于指定相对行范围的语法,该语法不给出“无效范围”,而是获得尽可能多的行。

2 个答案:

答案 0 :(得分:1)

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

:.-5,.+5 print

等效于此:

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

将被转换为此:

:execute max([1, (line('.') - 5)]) . ',' . min([line('$'), (line('.') + 5)]) 'print'

答案 1 :(得分:0)

我的CmdlineSpecialEdits plugin有一个CTRL-G +映射,将.-5,.+5之类的相对范围更改为绝对行号,反之亦然。它还可以更正寻址范围(<= 0,并且大于最后一个行号)并向后扩展范围。