如何将命令输出重定向到 bash 中的 vim?

如何将命令输出重定向到 bash 中的 vim?

我正在尝试将 bash 命令的输出重定向到新文件中。

如果我尝试如下管道:

ls -la | vim

Bash 显示错误:

Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.

我知道我可以打开 Vim 然后使用:

:r !ls -la

但是有没有办法在 bash 本身中做到这一点,以便打开 Vim 并自动将输出粘贴到那里?

答案1

您可以使用流程替代(这也适用于无法读取的应用程序STDIN):

vim <(ls -la)

或者使用vim的功能读取STDIN

ls -la | vim -

答案2

你自己就很接近了。只是缺少一个角色。

ls -la | vim -

答案3

这是另一种方法,希望能教会人们一些新东西。

如果您知道该命令:r !ls -la在 vim 中有效,则可以执行以下操作来打开 vim 并使其在打开后立即运行该命令,直接从 bash:

vim -c ':r! ls -la'

这相当于打开vim然后执行命令:r! ls -la。这适用于任何vim命令,其中命令位于-c选项之后。

答案4

我想添加一个选项

ls -al | view -

view是 vim 的只读版本(相当于vim -R

相关内容