有没有办法在Vim中的文件中移动类似于Emacs的Isearch?

时间:2012-06-03 20:27:41

标签: search vim

我已经使用Vim已经有一段时间了,我觉得我终于以某种方式“流利”了,但我看到了一些功能列表,视频和其他东西(尤其是Tim Visher在Emacs中的Vimgolf)系列)真的说服我试试Emacs。

所以在过去的一周里,我几乎一直在使用Emacs。我真的很想念Vim熟悉的一些概念(主要是动作运动风格,像ci"等等),但我在Emacs中真正学会喜欢的一个方法就是用文件移动文件。 ISEARCH。

例如,如果我想移动到调用函数 fn 的行,并且在点和我要移动的位置之间还有2个其他'fn'实例,我做C-s fn C-s C-s。如果我想在Vim中做同样的事情,我必须做一些像/fn <CR> n n :noh <CR>这样的事情,这个事情一点也不好,所以我可能只是查看行号并做#G wwwww...

所以我的问题是:有没有办法通过在Vim中搜索来模拟Emacs运动的效率?它不必使用搜索,我只是寻找除了繁琐的上线之外的其他内容并转发我上面描述的几个单词。

编辑:Effective Emacs中的第4项很好地描述了我正在努力实现的目标。

3 个答案:

答案 0 :(得分:2)

链接中描述的内容正是我在Vim中移动的主要方式:/foo<CR>nn用于增量转发搜索,?bar<CR>nn用于增量向后搜索。

我看不出<C-s>foo<C-s><C-s><C-r>foo<C-r><C-r>中效率更高的东西:更多的是击键!

无论如何,我认为:set hlsearch是你的问题。如果所有匹配都包含在视口中,那么一旦某些匹配被隐藏,它就变得无用了。我没有set hlsearch所以/foo<CR>对我来说是完全相反的。

嗯,另一个问题是在同一个文件中至少有三个具有相同名称的函数......

Vim有很棒的文本对象:}]m,这些对于第一次查看某些代码非常有用。

答案 1 :(得分:1)

您可以使用此键盘映射来模拟Emacs:cnoremap <C-s> <Cr>/<C-p>

尽管Vim有更好的移动方式而不是搜索。你试过ctags吗?

我还推荐EasyMotion插件,以便在文本的可见区域快速移动。

答案 2 :(得分:0)

我认为你正在寻找

set incsearch

你可以把它与

结合起来
set hlsearch

获得更好的结果。

同时查看“*”,它非常棒。