vim 多文件搜索并实现自动跳转

vim中,要在多个文件中寻找一个字符串,并能够实现自动跳转。
这个功能在阅读代码的时候尤其有用,在windows下,VS自动带有这个功能。在Vim中,需要实现两种跳转,1是自动寻找函数变量定义,这个可以通过ctag来实现。另一种是对于给定字符串,通常是一个函数或者一个变量,需要在程序中寻找它在那里被调用,这就需要查找所有的源码,然后实现跳转。这里说的是第二种跳转。

有一个wiki来介绍这个技术:http://vim.wikia.com/wiki/Find\_in\_files\_within\_Vim
命令
:grep pattern files
然后搜索的结果会放入quickfix list, 可以利用
:cw 或者 :copen
来打开这个列表,
通过上下键来选择文件来进行跳转。

关于这里的grep, 其后面跟的参数会直接送到linux系统的grep命令,所以所有的grep参数都可以在这里使用。

通常有用的是直接搜索光标下的单词,可以将这个作成一个map,这个map可以这样做:
nmap <C-A> :execute “grep” . expand(“<cword>”) . ” * -r –include=’*.cpp’ –include=’*.h’ ” <Bar> cw <CR>
表示CTRL+A 会在当前目录递归搜索光标下的单词,然后新开一个窗口, 在该窗口中列出所有的搜索结果,光标位于第一个搜索结果,可以利用上下键来选择你想要的跳转。其中的<Bar> 表示两个命令的分割 ,相当于”|” . cw即上文提到的打开quickfix list 的命令。

在列表中跳转的时候,除了利用光标来选择外,还可以用命令直接选择:
:[N]cnext #跳转到当前位置以后的第N个匹配行
:[N]cpre #跳转到当前位置以前的第N个匹配行

另外,关于VI中的当前目录问题:
可以直接用
:pwd
来查看当前目录,利用
:cd ../
来改变当前目录

:cd %:p:h
可以改变当前目录到当前文件的所在的目录

:set autochdir
可以自动实现当前目录的切换。

另一个有用的命令是关闭窗口,当然可以先切换窗口,然后用:q关闭某个窗口。还有一个不用敲:q的方法,就是(ctrl+w , q),可以关闭当前窗口



本文地址: http://www.bagualu.net/wordpress/archives/2240 转载请注明




“vim 多文件搜索并实现自动跳转”的一个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注