在 Vim 中,从命令行获取输出的优雅方式是什么?

Nat*_*ong 14 vim

如果我在 Vim 中并想从命令行获取一些输出并将其添加到我当前的文件中,我可以运行以下命令:

:! echo "foo" >> %
Run Code Online (Sandbox Code Playgroud)

这会将“foo”附加到我当前的文件中,我将不得不重新加载。

有没有更优雅的方法来做到这一点 - 例如,让输出进入我可以粘贴的缓冲区?

gar*_*ohn 24

是的:

:r !echo "foo"
Run Code Online (Sandbox Code Playgroud)

:help :r!
Run Code Online (Sandbox Code Playgroud)

这将在当前行之后插入命令的输出。如果要将命令输出捕获到可以粘贴的寄存器中,可以执行以下操作:

:let @a = system('echo "foo"')
Run Code Online (Sandbox Code Playgroud)

现在命令的输出(包括尾随的换行符)在 register 中a。看

:help let-@
:help system()
Run Code Online (Sandbox Code Playgroud)