我的问题很简单.我搜索文件中的特定模式(比如说Tex文件中的标签)
:g/label/#
但是有很多事情发生.所以我想将此输出重定向到另一个文件,以便能够轻松地使用它.
你有诀窍或命令我不知道吗?
从原始帖子中不清楚你的意思是"用它轻松工作"但是通常很有用的是在缓冲区中查看并快速跳转所有匹配而不将匹配"提取"到单独的缓冲区.
vim内置了一个内部grep.你的例子就是这样的(在vim中,%
表示当前文件)
:vimgrep /label/ %
这将带您到第一次出现并报告有多少匹配.很酷的是你可以通过打开quickfix错误列表来查看列出的所有匹配项
:cope
现在你可以滚动并按enter
一条线跳转到匹配的确切位置.
如果从vim内部运行make并且编译器抛出错误,则quickfix错误列表与您使用的缓冲区完全相同:它会为您提供错误内容和位置的列表.
跳到quickfix指向的某个位置后,您可以通过:cn
和 在列表中前进和后退:cp
.:ccl
关闭错误列表.
您还可以通过:vimgrepa /newpattern/ %
或扩展"错误"列表:vimgrepadd
(记录)警告是vim的内部grep比大多数本机grep实现慢(但是你确实在windows中"免费"获取它).如果您确实安装了grep,则可以使用:grep而不是:vimgrep来获得类似的结果.
引用 :help grep
Vim有两种方法可以找到模式的匹配:内部和外部.内部grep的优点是它适用于所有系统并使用强大的Vim搜索模式.当Vim grep不能满足您的需求时,可以使用外部grep程序.
内部方法将更慢,因为文件被读入内存.优点是: - 自动识别行分隔符和编码,就像正在编辑文件一样. - 使用Vim搜索模式.可以使用多线图案. - 启用插件时:可以搜索压缩文件和远程文件.
如果您已经使用错误列表来处理编译错误,也可以使用位置列表.只需添加l
(对location
)到grep命令(的开始:lvimgrep
,:lvimgrepa
:lgrep
,:lgrepa
)并使用:lopen
:ln
:lp
:lcl
,而不是:c*
人.
有关更多命令,请咨询
:help grep :help quickfix-window :help quickfix :help quickfix-error-lists