【发布时间】:2019-04-01 03:33:23
【问题描述】:
假设我有一个包含以下文本的文件:
aaa
bbb
ccc
bbb
ccc
eee
我需要在ccc 的第二 次出现之后添加一个缺失的行ddd。
因此,使用内置的search() 函数(如建议的here)将不起作用,因为它会找到第一个匹配项。
我有一个 vimscript 函数的开始:
function! addLine()
normal /bbb
normal /bbb
" MISSING LINE
wq!
endfunction
是否可以仅使用普通模式等来执行此操作?如果有,怎么做?
【问题讨论】:
-
对
search()的连续调用应该会找到下一个匹配项。call search("bbb") | call search("bbb")或for i in range(10) | call search("bbb") | endfor等 -
如果我这样做
search("ccc") | search("bbb"),我似乎会在第一个bbb而不是第二个? -
你是从哪一行开始的?从第一行开始,
:call search("ccc") | call search("bbb")将我带到第 4 行(第二行bbb)。 -
-
啊,我明白了。改用
search("ccc", "e")- 它应该将光标移动到匹配的末尾,但似乎行为会根据调用的不同而有所不同,因此使用e标志明确指定该行为应该可以解决这个问题。
标签: vim