EasyGrep使用简介

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

   " plugin::EasyGrep {
let g:EasyGrepCommand = 1 " vimgrep:0, grep:1 #vimgrep搜索较慢, 在Win上无需安装grep.exe
let g:EasyGrepMode = 2 " All:0, Open Buffers:1, TrackExt:2 # 1表示在已打开的buff中搜索, 2表示在当前文件相同扩展名的文件中搜索
let g:EasyGrepRecursive = 1 " Recursive searching 递归搜索
let g:EasyGrepRoot = cwd " 设置搜索根路径, cwd:current dir
let g:EasyGrepRoot = "search:.git,.svn" 设置搜索根路径为git/svn repos的根路径
let g:EasyGrepRoot = "search:.project" 设置搜索根路径为包含.project文件的目录,这个文件需手动创建
let g:EasyGrepIgnoreCase = 1 " Not ignore:0, ignore:1 大小写敏感
let g:EasyGrepFilesToExclude = "tags, *.bak, *~, cscope.*, *.a, *.o, *.pyc, *.bak, *.swp"
" }