我发现自己几乎每天都会做以下事情
- 运行查找 (
find -name somefile.txt
) - 打开结果
vim
问题是我必须将结果复制并粘贴到命令find
中vim
。有什么办法可以避免这样做吗?我已经尝试了一些(find -name somefile.txt | vim
)但还没有发现任何有效的方法。
提前致谢
答案1
您可以使用命令替换:
vim $(find -name somefile.txt)
或者
find -name somefile.txt -exec vim {} \;
答案2
尝试这个:
- 启动vim
- 在 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
- 我的错 :)