Select 相对范围,忽略无效行号
Select relative range, ignoring invalid line numbers
我想知道是否有一种语法可以在 vim/ex 中指定一系列相对行,它不会给出 'invalid range' 而是尽可能多地获取行。
没有内置的方法,但您可以自己将相对范围解析为绝对行号,然后使用:help min()
and :help max()
将范围限制为可用行。因此,例如,以下相对范围:
:.-5,.+5 print
相当于:
:execute (line('.') - 5) . ',' . (line('.') + 5) 'print'
将转换为:
:execute max([1, (line('.') - 5)]) . ',' . min([line('$'), (line('.') + 5)]) 'print'
我的 CmdlineSpecialEdits plugin 有一个 CTRL-G +
映射,可以将 .-5,.+5
等相对范围更改为绝对行号,反之亦然。它还可以更正越界寻址(<= 0 且大于最后一行编号)和向后范围。
我想知道是否有一种语法可以在 vim/ex 中指定一系列相对行,它不会给出 'invalid range' 而是尽可能多地获取行。
没有内置的方法,但您可以自己将相对范围解析为绝对行号,然后使用:help min()
and :help max()
将范围限制为可用行。因此,例如,以下相对范围:
:.-5,.+5 print
相当于:
:execute (line('.') - 5) . ',' . (line('.') + 5) 'print'
将转换为:
:execute max([1, (line('.') - 5)]) . ',' . min([line('$'), (line('.') + 5)]) 'print'
我的 CmdlineSpecialEdits plugin 有一个 CTRL-G +
映射,可以将 .-5,.+5
等相对范围更改为绝对行号,反之亦然。它还可以更正越界寻址(<= 0 且大于最后一行编号)和向后范围。