如何使用管道使用vi编辑文件


15

可以说我有一个名为file.txt的文件。其中是我要用vi编辑的文件的名称。我想做这样的事情,以便我可以编辑文件:

cat file.txt | vi

但是,这不起作用。怎么做到呢?

要澄清的事情:

这是file.txt的内容:

textfile

所以我想以某种方式将file.txt的内容发送到vi,以便与键入时发生相同的事情vi textfile

file.txt的内容可以更改。我希望vi编辑file.txt中列出的任何文件。


我不认为vi = vim。我不知道这个问题与众不同,但您的标签有误导性。
soandos

我认为您要提出的问题可能还有更多。打开任意命名的文件是vi的基本用法。即:vi file.txt。您正在尝试做更高级的事情吗?
camster342

vi在OSX和其他现代Linux系统上启动vim。
tony_sid 2011年

我实际上正在尝试编辑名称存储在OSX剪贴板中的文件。键入pbpaste将显示文件名。我正在尝试编辑此文件,而不必实际键入它,而是使用剪贴板中存储的任何内容。Linux没有pbpaste,但从本质上讲与从cat文件名获取输出相同。
tony_sid 2011年

安装xclip,然后用于xclip -o访问x11中Shell上的剪贴板。万一您需要更换pbpaste...
akira

Answers:


9

您可以尝试以下方法:

% vi `cat file.txt`

或者,为避免猫咪使用猫:

% vi `< file.txt`

您是在告诉vi(m)一堆任意的东西。如果您想让vi(m)执行类似“嘿,打开该文件”的操作,则必须使用与在vi(m)中使用的相同命令来输入文件。像:e foo.txt。但这仅比我建议的要复杂。


那些没用。
tony_sid 2011年

4
这些是反引号,您输入正确吗?他们打开一个子外壳,执行'cat'...如果不起作用,请尝试 vi $(cat file.txt)
akira

哦,好的,现在可以了。谢谢。
tony_sid 2011年

23

至少对于vim(不确定vi),您可以

cat file.txt | vim -

'-'告诉vim从stdin读取。


1
抱歉,这不是正确的答案。这将打开带有内容“文本文件”的vim。发问者希望vim自行打开“文本文件”。我会投票,但可惜我在这里没有足够的声誉。
scubbo 2015年

scubbo是正确的!我的答案对于仅用stdin传递内容更有用。
杰夫
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.