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


87

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

如果我尝试如下管道:

ls -la | vim

Bash向我显示了错误:

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

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

:r !ls -la

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

Answers:




19

这是另一种方法,希望可以教给别人一些新知识。

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

vim -c ':r! ls -la'

这相当于打开vim然后执行命令:r! ls -la。这应该与任何vim命令一起使用,该命令在-c选项之后。


12

您可以告诉vim打开stdin:

ls -la | vim -

1

如果您的目标只是要将输出保存到文本文件中,则无需调用vim。Bash可以单独使用

ls -la > outputfile.txt

1

setlocal buftype=nofile

如果要创建别名来替换,这是一个不错的选择less

seq 100 | vim +':setlocal buftype=nofile' -

现在,您无需输入!退出。

另一个选择是:

seq 100 | vim +'nnoremap q :quit!' -

这样您就可以退出q<enter>


好主意。绝对比输入这么长短!:)
kode
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.