如何在gvim中拆分打开所有有待办事项的文件?

如何在gvim中拆分打开所有有待办事项的文件?,vim,Vim,我想在gvim中的分割缓冲区中打开所有要做的源文件 我很确定这可以通过grep完成,grep将其输出传输到edit命令,但我不确定如何实现这一点。您可以使用xargs: grep -l TODO * | xargs vim -o 我不会把它们劈开,除非你知道只有两三个 三个。但是,如果只有两到三个文件需要编辑,为什么要编辑 毕竟,是在寻找一个命令来自动打开它们吗 这是您可以使用的基本grep: grep -lIr TODO . 它在当前目录中递归搜索包含TODO和 列出它们。它还避免匹配二进

我想在gvim中的分割缓冲区中打开所有要做的源文件


我很确定这可以通过
grep
完成,grep将其输出传输到edit命令,但我不确定如何实现这一点。

您可以使用
xargs

grep -l TODO * | xargs vim -o

我不会把它们劈开,除非你知道只有两三个 三个。但是,如果只有两到三个文件需要编辑,为什么要编辑 毕竟,是在寻找一个命令来自动打开它们吗

这是您可以使用的基本grep:

grep -lIr TODO .
它在当前目录中递归搜索包含
TODO
和 列出它们。它还避免匹配二进制文件(包括.swp和.swo文件)。 然后,如果您运行的是GUI Vim,我会选择:

mvim --remote-silent $(grep -lIr TODO .)
或者,在Vim中,您可以使用
:argadd
命令和backticks扩展 sehe在评论中巧妙地建议:

:args `grep -Ilr TODO .`

实际上,vim中有一个特性,它可能比您实际要求的做得更好。签出
:帮助快速修复
。基本上,您可以按照您的想象执行grep:

grep-rn TODO.>index.txt

然后,您可以在vim的快速列表中打开此索引:

vim-q index.txt


这将允许您通过执行
:cn
(下一步)和
:cp
(上一步)浏览所有这些文件中的每个TODO。也可以使用
:copen
打开底部的“快速列表”窗口,显示您在整个列表中的位置,并允许您导航到任何文件中的每个TODO。

您没有说明正在使用哪个操作系统和shell。但假设您正在使用类似于bash的
bash
,这应该可以:

vim-o$(grep-lr-TODO.)

但是,如果您当前的工作目录是git repo或其他什么,请小心,因为这将包括其中的文件。根据vim的设置方式,也可能会得到旧的交换文件。为了解决这个问题,我有一个To
grep
,带有一个buncho'
--exclude
--exclude dir
参数。e、 g:


alias gg='grep--exclude='\'''.*.sw?'\'''''--exclude dir=''\'.'git\'

您在谈论多少个文件?在同一个屏幕上进行30次拆分可能有点不切实际TR也可以是
粘贴-sd'
你可以只
:args`grep-Ilr TODO.
(要立即打开/显示它们,
:sall
:tab sall
等)@sehe-Hmm,如果可以复杂化,为什么要简化?:-)我不记得在本例中使用了反勾号,并且用换行符计算的字符串与:exec不匹配,因此我提出了到tr的管道。这有可能会弄乱终端,因为vim在子shell中运行,而不是连接到终端。至少,使用
xargsgvim-o
或类似方法创建一个文件看起来不必要的混乱。试试这个: