如何使用管道编辑带有 vi 的文件

ton*_*sid 15 vim vi shell command-line macos

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

cat file.txt | vi
Run Code Online (Sandbox Code Playgroud)

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

澄清事情:

下面是 file.txt 的内容:

textfile
Run Code Online (Sandbox Code Playgroud)

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

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

Jef*_*eff 23

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

cat file.txt | vim -
Run Code Online (Sandbox Code Playgroud)

'-' 告诉 vim 从标准输入读取。


aki*_*ira 9

你可以试试这个:

% vi `cat file.txt`
Run Code Online (Sandbox Code Playgroud)

或者,为了避免使用 cat:

% vi `< file.txt`
Run Code Online (Sandbox Code Playgroud)

你告诉 vi(m) 只是一堆随意的东西。如果您希望 vi(m) 执行诸如“嘿,打开该文件”之类的操作,则必须向它提供与在 vi(m) 中使用的命令相同的命令,例如。类似的东西:e foo.txt。但这只是比做我建议的更复杂。

  • 这些是反引号,你输入正确了吗?他们打开一个子shell,执行'cat'...如果这不起作用,请尝试`vi $(cat file.txt)` (4认同)