原文是Redirect g search output

查看服务器日志的时候,常常需要把带某些关键字的行过滤出来,集中到一个地方查看。在Vim中,我们可以使用自定义命令来达到这个目的。

下面我们要创建:Filter命令,用来过滤关键字并把结果放到一个新开的临时窗口中:

详细解释:

  • command!, 定义一个命令
  • -nargs=?, 这个命令接受0或1个参数
  • Filter, 命令的名字,后面跟的是命令的内容
  • let @a='', 清空寄存器a
  • execute 'g/<pattern>/y A', 执行'g/<pattern>/y A' (搜索与<pattern>匹配的行,将其添加到寄存A)
  • new, 创建一个新窗口
  • setlocal bt=nofile, 把当前窗口设为scratch模式
  • put! a, 把寄存器a的内容粘贴到新窗口

记得把:Filter的定义加入到你的**.vimrc**中。

简单的例子:

过滤将带有404错误的行。

还可以使用正则表达式:

过滤带有red或者blue的行。

如果:Filter不带任何参数,会重复上回搜索的结果。

其他:

:help :g

Power of g

Filter buffer on a search result