移动到搜索查找的开始和结束

移动到搜索查找的开始和结束

问题描述:

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

例如,此文件:

A dog and a cat 
A hat and a bat 

我想能够执行搜索,例如/dog\sand,然后能够从一开始移动“狗和”表达了结束和返回,以便我的光标从第3列开始,位于单词'dog'的字母'd'下,然后移至第9列下的字母'd'或单词'and'。

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

您可以用c//e<CR>更改为比赛结束。而//<CR>会带你到下一场比赛的开始。你或许可以为那些有意义的人制定某种绑定。比如我刚试过以下,它似乎很好地工作:

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

所以,你可以说cm变革的比赛。不过,我不确定我会如何映射//<CR>。我试图将其映射到n,它似乎工作正常。不知道这对你是否会有问题。

:nnoremap <silent>n //<CR> 
+0

这有点粗俗,因为它会用较少的有用行为覆盖默认的Vim行为;例如,你将无法执行'[count] n'。 – 2013-04-19 17:24:13

+0

同意。在另一个答案中提到的'gn'命令要好得多,但我认为它不存在于2011年5月。 – 2013-04-24 14:21:56

+2

随着新解决方案的出现,正确的解决方案可能会改变。 = P – 2013-04-24 15:15:05

尝试的部份:

/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 
+0

我该如何将它用作移动命令?我看到这是如何让我搜索到表达式的结尾,但它不是一个移动命令。 – 2011-05-10 20:33:13

+0

对不起,在这里,“移动”这个词很混乱。 '/ pattern '将光标置于搜索模式的** start **处。并且'/ pattern/e '将光标置于搜索模式的**结尾**处。 – anubhava 2011-05-10 20:37:57

+0

没错,但这怎么可以作为一个移动命令?请看我原来的问题。例如,我无法使用更改命令的答案。 – 2011-05-10 20:44:58

既然你知道你有多少字搜索,为什么不搬到那里,然后再使用文字移动命令?即,“2w”结束当前搜索结果,“2b”返回。

+2

我在这个微不足道的例子中,但在更复杂的情况下,并不那么容易。如果搜索表达式包含标点符号和数字,该怎么办? – 2011-05-10 20:44:06

您正在寻找ç克ñ。从: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. 

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

+3

这在Vim 7.3.46中不起作用,但在7.3.736中起作用。 – bentsai 2013-04-30 21:06:40