y/
或y?
到yank
,直到特定的搜索命中率是我经常依赖的生产力提升,但有些事情一直困扰着我,我在文档和搜索中搜索到目前为止,网络尚未得出答案:你如何在猛烈的搜索运动中选择不同的命中?例如,我说我有一个包含以下内容的缓冲区:
1: foo bar
2: foo baz
3: This line contains the cursor.
假设我在正常模式下输入y?foo
并意识到我不希望第2行中的foo,但它在第1行中出现;在选择我需要完成拉杆操作的那个之前,我是否可以按下这个键以在不同的命中之间导航? (n和N不适用,因为它们改变了搜索模式)
这个简单的例子对我处理的常用大缓冲区内容不公平,因此我可能无法事先看到搜索命中。此外,有时我可能犯了一个错误,并意识到我想在操作过程中找到另一个事件。基本上,我希望能够在操作过程中懒洋洋地改变路线。
答案 0 :(得分:8)
由于这是交互式的,因此请使用可视模式:
v?foo<cr>ny
鉴于上面的示例缓冲区,这将向后搜索“foo”,找到另一个(向后)匹配,然后抽取所有(视觉上)选定的文本。
视线模式是大写字母V,通常也很有帮助。可视块模式是ctrl-V,有时也很有帮助。
答案 1 :(得分:4)
标记你的位置,搜索并猛拉到标记:
ma
?foo
n
y`a
答案 2 :(得分:1)
那么你可以修改你的正则表达式,使其只在某一行之前匹配:
y?foo\%<2l
我认为使用视觉模式更容易确保您正确地填写正确的文字:
v?foo<CR>y