用传递的文件名打开vi

Sun*_*Lim 6 vim bash

我通常这样使用

$ find -name testname.c
./dir1/dir2/testname.c
$ vi ./dir1/dir2/testname.c
Run Code Online (Sandbox Code Playgroud)

再次输入位置文件名是很烦人的.

我怎么能只用一步呢?

我试过了

$ find -name testname.c | xargs vi 
Run Code Online (Sandbox Code Playgroud)

但我失败了.

Mic*_*ski 10

使用-exec参数来find.

$ find -name testname.c -exec  vi {} \;
Run Code Online (Sandbox Code Playgroud)

如果您find返回多个匹配项,则文件将按顺序打开.也就是说,当你关闭一个时,它会打开下一个.你不会让他们全部排队在缓冲区.

要使它们在缓冲区中全部打开,请使用:

$ vi $(find -name testname.c)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这真的是vi,而不是Vim,现在vi经常被别名?


K Z*_*K Z 6

您可以使用bash中的以下命令执行此操作:

要么使用

vi `find -name testname.c` 
Run Code Online (Sandbox Code Playgroud)

或者使用

vi $(!!)
Run Code Online (Sandbox Code Playgroud)

如果你已经输入过 find -name testname.c

编辑:可能重复:bash - 自动捕获上次执行的命令输出到变量中