本文主要是介绍Vim多文件搜索特定内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
reference: http://blog.chinaunix.NET/uid-14770335-id-3025369.html
用VIM开发或浏览项目时,经常会用到多文件的模式搜索。一些场合,可以用cscope find t可以解决了。可是遇到复杂的模式,该命令就捉襟见肘了。这时候就得用vim自带的匹配利器---vimgrep。
vimgrep有两种使用的方式:
1)将匹配模式放到//之间:这样情况下,使用vim的正则模式来进行匹配
命令格式: :vim[grep][!] /{pattern}/[g][j] {file}
例子:
:vim /function demo/ *.c 在当前目录的.c文件中,搜索function demo
:vim /function demo/ **/*.c 在任意目录的.c文件中,搜索function demo
:vim /function demo/ **/*.{h,c} 在任意目录的.c和.h文件中,搜索function demo
:vim /\cfunction demo/ **/*.c 使用\c,不区分大小写
:vim /\Cfunction demo/ **/*.c 使用\C,区分大小写
:vim /function demo/j *.c 只更新quickfix,不跳转到第一个搜索结果
:vim /function demo/g *.c 一行中若有多个匹配,每个都要单独显示一行
2)直接加匹配模式:这种情况下只能搜索ID,举个例子,就不详细说了
:vimgrep Error *.c
vimgrep可以跟split或vsplit结合使用,将结果显示到单独的窗口中:
vsp | vimgrep demo *.c
lvimgrep跟vimgrep功能上是一样的,但该命令更新提本地的窗口列表,而不是quickfix列表
若结果更新到quickfix:
用cw查看,cn下一条,cp上一条,ccl关闭结果,colder上次搜索结果,cnewer下次搜索结果。
若结果更新到本地的窗口列表:
用lopen查看,lcl关闭,lnext下一条,lpre上一条,lolder上次搜索结果,lnewer下次搜索结果。
这篇关于Vim多文件搜索特定内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!