移至搜索查找的开始和结束

时间:2011-05-10 20:20:10

标签: vim macvim

在vim / gvim中,我希望能够移动到当前搜索查找的前端和末尾。这可能吗?

例如,使用此文件:

A dog and a cat
A hat and a bat

我希望能够执行搜索,例如/dog\sand,然后能够从'dog and'表达式的开头移动到结束和返回,以便我的光标从第3列开始,在“狗”字样的“d”字母下面,然后移到字母“d”或“和”字样下的第9列。

我希望能够这样做的原因是我可以搜索表达式,然后使用更改命令c,结合移动命令来替换该特定搜索表达式。我不想在这里使用substitue和替换,我想使用更改命令和移动键来执行此操作。

4 个答案:

答案 0 :(得分:37)

您正在寻找 c g n 。来自:help gn

Search forward for the last used search pattern, like
with `n`, and start Visual mode to select the match.
If the cursor is on the match, visually selects it.
If an operator is pending, operates on the match.
E.g., "dgn" deletes the text of the next match.
If Visual mode is active, extends the selection
until the end of the next match.

这样做的好处是你可以做 c g n ,然后用重复命令。 ,是的,它将在下一个搜索模式匹配上执行相同的操作。当您开始使用复杂的正则表达式进行搜索时,这将非常有用。

答案 1 :(得分:16)

您可以使用c//e<CR>更改为匹配的结尾。 //<CR>将带您到下一场比赛的开始。你可以为那些有意义的东西找出某种绑定。例如,我只是尝试了以下内容,它看起来效果很好:

:onoremap <silent>m //e<CR>

这样您就可以说cm更改匹配。不过,我不确定将//<CR>映射到什么地方。我尝试将其映射到n,它似乎工作正常。不知道这对你来说是不是一个问题。

:nnoremap <silent>n //<CR>

答案 2 :(得分:12)

尝试:

/pattern<cr> to place the cursor at the start of search pattern
/pattern/e<cr> to place the cursor at the end of search pattern

答案 3 :(得分:-2)

既然你知道你要搜索多少个单词,为什么不移动那里再使用单词移动命令呢?即,“2w”结束当前搜索结果,“2b”返回。