将Grep输出中的文件打开到Vim的-o -mode

Léo*_* 준영 44 vim

你怎么能把文件列表放到Vim的-o -mode?

我有一个文件列表作为Grep的输出.我跑得不成功

1

grep -il sid * | vim -o
Run Code Online (Sandbox Code Playgroud)

2

grep -il sid * | xargs vim -o
Run Code Online (Sandbox Code Playgroud)

3

grep -il sid * | xargs vim
Run Code Online (Sandbox Code Playgroud)

4

vim -o `grep -il sid *`
Run Code Online (Sandbox Code Playgroud)

vim -o | grep -il sid *
Run Code Online (Sandbox Code Playgroud)

asy*_*ric 28

尝试

vim -p `grep -il sid *`
Run Code Online (Sandbox Code Playgroud)

如果要在同一窗口中的不同选项卡中打开文件.


dim*_*mba 25

跑:

grep -il sid * | vim -
Run Code Online (Sandbox Code Playgroud)

这告诉vim从stdin读取文件,因此grep的输出将在vim中.现在,将光标放在文件上并按gF - 这将打开grep指示的行上的文件.

您还可以使用^ WF在新拆分中打开文件.


lio*_*ori 15

第二个适合我.第三,虽然您在开始时只能看到一个文件.在大多数情况下,4与2相同.第一个和最后一个不应该按设计工作.


Sam*_*amo 9

对不起,我来晚了.其中一些选项对我有用,但有很多副作用.试试这个:

vim -o $(grep -il sid *)
Run Code Online (Sandbox Code Playgroud)

  • 在 Ubuntu 上,所有其他答案都抱怨输入不是来自终端。在那之后,我的终端被冲洗掉了。 (2认同)

Sun*_*tye 5

要调用vimusing xargsxargs必须通过以下方式调用-o

grep -il sid * | xargs -o vim -o
Run Code Online (Sandbox Code Playgroud)

如果文件名可能包含空格,请grep -Z使用xargs -0

grep -ilZ sid * | xargs -0 -o vim -o
Run Code Online (Sandbox Code Playgroud)

如果没有xargs -o,我们会收到警告:

Vim: Warning: Input is not from a terminal
Run Code Online (Sandbox Code Playgroud)

-o选项存在于 OSX/BSD 上。此外,该选项可以在从 git 构建的 GNU findutils-o中找到 。该选项是4.6.0之后添加的。