如何使用管道在 vim 中打开文件

如何使用管道在 vim 中打开文件

我非常频繁地使用该locate命令。

因此如果我运行以下命令。

locate updatedb | head -1

然后它给了我O/p

/usr/updatedb.conf

我想知道是否有这样的命令可以让我直接打开该文件?

我希望发生这样的事情。

locate updatedb | head -1 | vim

答案1

您快完成了:

$ locate updatedb | head -1 | xargs vim

有时(在某些终端下)您需要在编辑后重置终端。

$ reset

答案2

作为交互式编辑器,Vim 需要 stdin 和 stdout,因此在管道中使用它会有问题,并且会导致 Vim 对此发出警告。对于单个文件,进程替换可以轻松解决这个问题:

vim "$(locate updatedb | head -1)"

您还可以使用反引号,这甚至可以在 Vim 内部使用:

:edit `locate updatedb | head -1`

答案3

此外上述答案,为了避免 Jacobo de Vera 在评论中提到的“终端损坏”,请使用 xargs 选项-o--open-tty让 vim 假定输入来自终端,而不是 stdin。

$ locate updatedb | head -1 | xargs -o vim

看:https://unix.stackexchange.com/a/44428/307359

答案4

这就是旧的良好标准维佩是用来。

仅供参考,我写道派维佩(它的 python 端口)用于我的研究。链接的 github 代码确实很短,就像原始 vipe 一样。

事实证明它与文件描述符和dup()和有关dup2()

相关内容