技巧110-定制grep程序

  • vim的:grep 是外部grep程序的包装。
    • 配置grepprg与grepformat可以对vim的grep进行定制。

vim默认的grep设置

'grepformat' 'gfm'      string  (default "%f:%l:%m,%f:%l%m,%f  %l%m")
'grepprg' 'gp'          string  (default "grep -n ",
                                 Unix: "grep -n $* /dev/null",
                                 Win32: "findstr /n" or "grep -n",
                                 VMS: "SEARCH/NUMBERS ")

通过:grep 调用ack

  • 对比ack与grep:http://betterthangrep.com
  • ubuntu 中安装ack
sudo apt-get install ack-grep
sudo ln -s /usr/bin/ack-grep /usr/local/bin/ack
  • OS X中使用Homebrew进行安装
brew install ack
  • ack 实现grep -n的效果
ack --nogroup
  • 采用ack代替grep最简单的方法是把'grepprg'设置成以下值:
:set grepprg=ack\ --nogroup\ $*

通过ack跳转到指定的行或列

  • ack 采用--column参数运行ack时,它会给出每一处匹配的行号与列号。
ack --nogroup --column Waldo *
  • 修改grepprg和grepformat完成这一功能
    • %f表示文件名
    • %l表示行号
    • %c表示列号
    • %m表示匹配的文本
:set grepprg=ack\ --nogroup\ --column\ $*
:set grepformat=%f:%l:%c:%m

其他grep插件

  • Ack.vim
  • fugitive.vim:Ggrep命令