y/或y? to yank直到某个特定的搜索命中是我经常依赖的效率提升,但有一件事困扰了我一段时间,我在文档和网络上的搜索到目前为止还没有得到答案:你如何在美国式搜索运动中选择一个不同的命中?例如,假设我有一个包含以下内容的缓冲区:
1: foo bar
2: foo baz
3: This line contains the cursor.假设我在正常模式下输入y?foo,并意识到我不希望foo出现在第2行,而是它出现在第1行;有没有一个键可以让我在选择完成yank操作所需的键之前,在不同的命中之间进行导航?(n和N不适用,因为它们更改了搜索模式)
这个简单的示例不能很好地处理我通常处理的大缓冲区内容,因此我可能无法预先看到搜索命中。此外,有时我可能会犯一个错误,并意识到我希望在操作过程中找到另一个事件。基本上,我希望能够在操作过程中懒惰地改变路线。
发布于 2011-02-16 13:18:43
因为这是交互式的,所以使用可视模式:
v?foo<cr>ny给定上面的示例缓冲区,这将向后搜索"foo",找到另一个(向后)匹配,然后拖出所有(视觉上)选定的文本。
视线模式是大写的V,而且通常也很有用。可视块模式是ctrl-V,有时很有用。
发布于 2011-02-16 08:08:04
标记你的位置,搜索,并拉到标记上:
ma
?foo
n
y`a发布于 2011-02-16 11:42:22
你可以修改你的正则表达式,让它只匹配某一行之前的内容:
y?foo\%<2l我认为使用视觉模式来确保你的文本是正确的会更容易:
v?foo<CR>yhttps://stackoverflow.com/questions/5011007
复制相似问题