在 vim 中打开由命令结果给出的文件

在 vim 中打开由命令结果给出的文件

我发现自己几乎每天都会做以下事情

  1. 运行查找 ( find -name somefile.txt)
  2. 打开结果vim

问题是我必须将结果复制并粘贴到命令findvim。有什么办法可以避免这样做吗?我已经尝试了一些(find -name somefile.txt | vim)但还没有发现任何有效的方法。

提前致谢

答案1

您可以使用命令替换:

vim $(find -name somefile.txt)

或者

find -name somefile.txt -exec vim {} \;

答案2

尝试这个:

  1. 启动vim
  2. 在 vim 中,使用以下命令:

:r!find /<path> -name 'expression'

搜索完成后,结果应该出现在 vim 中。

或者

尝试:

find /<path> -name > results.txt
vim results.txt 

答案3

如果您不介意再次运行该命令:按Up并附加xargs命令。或者使用历史替换并运行

!! | xargs vim          # won't work with file names containing \'" or whitespace
!! | xargs -d \\n vim   # GNU only (Linux, Cygwin)

有一种轻量级的方法可以保存在 ksh 和 zsh 中有效但在 bash 中无效的命令的输出(它需要在父 shell 中执行管道的输出端)。将命令通过管道传输到函数中K(下面的 zsh 定义),其中k将其输出保存在变量 中$K

function K {
    K=("${(@f)$(tee /dev/fd/3)}") 3>&1;
}
find … |K
vim $K

仅使用 shell 不可能自动保存每个命令的输出,您需要在模拟终端中运行该命令。你可以通过在里面运行来做到这一点script(一个 BSD 实用程序,但在大多数 unice 上可用,包括 Linux 和 Solaris),它通过文件保存会话的所有输出(仍然需要一些努力来可靠地检测打字稿中的最后一个提示)。

答案4

我一定错过了这里的要点,因为我会使用:

:find **/somefile.txt

(如果我知道我的 中只有一个 :echo &path )或者,如果我想要全部:

:args **/somefile.txt

编辑:哇!好的,所以我做过错过了重点 - 您想要查找列表,而不是打开的实际文件吗?尝试(再次在 Vim 中):

!!find . -name somefile.txt

- 我的错 :)

相关内容