结合搜索动作和猛拉

时间:2011-02-16 00:05:47

标签: vim

y/y?yank,直到特定的搜索命中率是我经常依赖的生产力提升,但有些事情一直困扰着我,我在文档和搜索中搜索到目前为止,网络尚未得出答案:你如何在猛烈的搜索运动中选择不同的命中?例如,我说我有一个包含以下内容的缓冲区:

1: foo bar

2: foo baz

3: This line contains the cursor.

假设我在正常模式下输入y?foo并意识到我不希望第2行中的foo,但它在第1行中出现;在选择我需要完成拉杆操作的那个之前,我是否可以按下这个键以在不同的命中之间导航? (n和N不适用,因为它们改变了搜索模式)

这个简单的例子对我处理的常用大缓冲区内容不公平,因此我可能无法事先看到搜索命中。此外,有时我可能犯了一个错误,并意识到我想在操作过程中找到另一个事件。基本上,我希望能够在操作过程中懒洋洋地改变路线。

3 个答案:

答案 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