【发布时间】:2020-01-29 02:20:43
【问题描述】:
是否可以运行外部命令并将其输出存储在寄存器中?
-
:redir适用于 ex 命令,不适用于外部命令 (afaik) -
:r !运行外部命令,但直接将输出插入到 当前缓冲区
【问题讨论】:
标签: vim
是否可以运行外部命令并将其输出存储在寄存器中?
:redir 适用于 ex 命令,不适用于外部命令 (afaik):r ! 运行外部命令,但直接将输出插入到
当前缓冲区【问题讨论】:
标签: vim
感谢 vim-use 邮件列表中的一位用户找到了答案:
:let @a = system("ls -l")
使用光标下的文件作为参数运行命令:
:let @a = system("ls -l " . shellescape(expand('<cfile>')))
【讨论】:
shellescape() 函数是明智的。在此示例中,:let @a = system("ls -l " . shellescape(expand('<cfile>'))).
let foo = system("command here", @a)
:redir 似乎确实有效,虽然有点笨拙。如果您希望将文件中的数据通过管道传输到外部命令中,这可能会更容易。
:redir @a
:w ! ls -1
:redir END
"ap
编辑:有趣的是,我刚刚注意到它似乎在 neovim v0.4.3 中对我有用,但在 vim 8.2.100(MacOS 10.15.2,均通过自制软件安装)中不。
【讨论】: