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


15

locate经常使用该命令。

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

locate updatedb | head -1

然后它给了我 O/p

/usr/updatedb.conf

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

我希望有这样的东西。

locate updatedb | head -1 | vim

Answers:


22

您即将完成:

$ locate updatedb | head -1 | xargs vim

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

$ reset

2
很可能您的版本locate具有-l/ --limit/ -n选项,因此您不需要head -1locate -n 1 updatedb | xargs vim
Dmitry Alexandrov

1
为什么会发生这种终端腐败?有什么办法可以避免呢?
Jacobo de Vera

16

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

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

您也可以使用反引号,甚至可以在Vim本身内运行:

:edit `locate updatedb | head -1`

这也适用于带空格的字符串,这对于诸如“版本2-final.csv”之类的文件名非常有用。
Alex Moore-Niemi

0

我知道这是一个糟糕的解决方案,但我使用它在.bashrc中创建别名:

locate updatedb  > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch

缺点:丑陋

优点:终端无副作用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.