VIM:将外部命令的输出存储到寄存器中

时间:2009-11-07 20:57:46

标签: vim

是否可以运行外部命令并将其输出存储在寄存器中?

  • :redir适用于ex命令,不适用于外部命令(afaik)
  • :r !运行外部命令,但直接将输出插入到    当前缓冲区

2 个答案:

答案 0 :(得分:37)

感谢vim-use邮件列表上的用户找到答案:

:let @a = system("ls -l")

使用光标下的文件作为参数运行命令:

:let @a = system("ls -l " . shellescape(expand('<cfile>')))

答案 1 :(得分:0)

:redir似乎确实有用,尽管有些笨拙。如果您希望将文件中的数据通过管道传递到外部命令,则可能会更容易。

:redir @a
:w ! ls -1
:redir END
"ap

编辑:有趣的是,我刚刚注意到它似乎在neovim v0.4.3中对我有用,但在vim 8.2.100(MacOS 10.15.2,都通过自制程序安装)中不是。 / p>