我想知道是否有一种语法可以在 vim/ex 中指定一系列相对行,它不会给出“无效范围”,而是尽可能多地获取行。
问问题
117 次
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 回答