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


14

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

:! echo "foo" >> %

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

有没有更优雅的方法可以执行此操作-例如,将输出放入我可以粘贴的缓冲区中?

Answers:


24

是:

:r !echo "foo"

看到

:help :r!

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

:let @a = system('echo "foo"')

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

:help let-@
:help system()

在查看了帮助并进行了实验之后,我看到1):r“ read”的缩写(因此您可以键入“ read”或“ r”,并且是同一命令),以及2)这样做:r path/to/foo.txt将插入该内容光标后的文件。
弥敦道(Nathan Long)

另外-我不知道system打来的电话。棒极了!
弥敦道(Nathan Long)

1
我也不知道您可以手动设置寄存器,例如let @a = 'foo'。一个好主意是,在进行搜索和替换之后,您可以通过执行以下操作将搜索项保存到寄存器中以粘贴到其他位置let @a = @/:“使寄存器包含/寄存器包含的内容,即我的上一次搜索。”
弥敦道(Nathan Long)

1
@内森·朗:不客气。从/寄存器粘贴的其他方法是1)执行:put /以将寄存器内容放在下一行,以及2)在插入模式下,键入Ctrl-R,然后/在光标位置插入寄存器内容。有关这些的更多信息,请参见:help :put:help i_CTRL-R
garyjohn
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.