如何将Vim从当前行反向(向上)替换(用于搜索我正在使用?textToFind
,以替换当前位置:,$s/a/b
)?
答案 0 :(得分:1)
您可以使用:s
命令使用向后范围。
如果你想从第1行替换到当前行,你可以:,1s/foo/bar/g
vim会询问你是否确定在后退范围内应用命令,按y
您还可以执行:,-3s/foo/bar/
之类的操作,从当前行(n
)到行n-3
进行替换
答案 1 :(得分:1)
用于s//
(和其他Ex命令)的范围可以由:
1,23
-5,+17
.,$
'a,'g
?foo?,/bar/
?foo?,'g
,23,$
,+5,/bar/
,.,/baz/+6
...... 从光标前的foo
的第一个实例延伸到最后一行的范围可能如下所示:
?foo?,$
从光标前的foo
的第一个实例延伸到当前行的范围可能如下所示:
?foo?,.
甚至缩短为:
?foo?,
答案 2 :(得分:0)
从头到尾没有内置的方式来访问这些行。 Vim会发出Backwards range given, OK to swap?
个查询,并在确认后转过来。唯一的方法是以相反的顺序手动指定各行:
:.s/a/b | .-1s/a/b | .-2s/a/b | ...
当然,您可以为此编写自定义命令。
如果你还需要反向替换 一行(所有这些只对c
onfirm标志有意义,不是吗?),你是运气不佳:substitute
。