Linux上使用Vim进行文件搜一般使用grep命令+grep.vim插件完成, 但在Windows上使用grep就有些不方便了, GnuWin32UnxUtils虽然都提供了Windows移植版本的Grep.exe, 但都有bug, 比如:

在Windows上使用grep还有一个折衷的办法: 使用Cygwin环境, 不过今天这里不讨论Cygwin...
偶然在这个博客上发现了EasyGrep插件的介绍: vim中的杀手级插件: EasyGrep, 当时我是多么执着于在Windows上移植Grep和ack啊... 浪费了不少时间之后才发现还是使用现成的工具比较好-.-

EasyGrep的安装

如果你已经使用了Vundle管理Vim插件, 只需要在.vimrc里增加Bundle 'EasyGrep'然后使用:BundleInstall安装即可.

How To Use

  • \vv or :Grep\vv命令将在文件中搜索当前光标下的单词, :Grep word将搜索"word", 如果加叹号:Grep !word表示全词匹配的方式搜索, Grep也可以带参数, 比如:Grep -ir word, r表示递归目录. i表示不区分大小写.
  • \vV : 全词匹配搜索, 同:Grep !word;
  • \va : 与vv相似, 搜索结果append在上次搜索结果之后;
  • \vA : 与vV相似, 搜索结果append在上次搜索结果之后;
  • \vr or :Replace :替换;
  • \vo or :GrepOptions: 打开选项菜单;

GrepOptions打开的界面:
图1: GrepOptions打开的界面
上方红色的是快捷键help, 比如q是退出GrepOptions, r是开启递归搜索...

下方兰色的可以选择搜索范围(回车选择): All表示全部搜索, Buffer表示只搜索当前打开的buff, TrackExt几乎包括所有常见的文件类型, 比如C++, PHP, Lisp等源文件. User是自己制定文件类型.

Options Details

每个Option的解释可以参考Github上的README

let g:EasyGrepMode = 2     " All:0, Open Buffers:1, TrackExt:2, 
let g:EasyGrepCommand = 0  " Use vimgrep:0, grepprg:1
let g:EasyGrepRecursive  = 1 " Recursive searching
let g:EasyGrepIgnoreCase = 1 " not ignorecase:0
let g:EasyGrepFilesToExclude = "*.bak, *~, cscope.*, *.a, *.o, *.pyc, *.bak"
Logo

更多推荐