我想知道在vim / ex中是否存在一种用于指定相对行范围的语法,该语法不给出“无效范围”,而是获得尽可能多的行。
答案 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,并且大于最后一个行号)并向后扩展范围。