如何在 vim 中运行 shell 命令并将结果字符串返回到 VimScript 变量中?

3 vim shell fork subprocess

我怎样才能在vim中完成这个极其简单的操作呢?

let g:string_from_shell = run_in_shell('awk ...') 
Run Code Online (Sandbox Code Playgroud)

(命令仅用于说明)

Sib*_*der 7

您可以使用system函数在vim中执行系统/shell命令。然后,您可以将其输出存储到 vim 变量中。

句法 :

  :let variable = system("shell command")
Run Code Online (Sandbox Code Playgroud)

您可以通过打印变量来检查其输出,例如

  :echo variable
Run Code Online (Sandbox Code Playgroud)

例子:

  :let list = system("ls -ltr")
  :echo list
Run Code Online (Sandbox Code Playgroud)

要了解更多信息,请输入:help system()命令行。

  • 请注意,您可能想要修剪/截断尾随换行符。 (3认同)
  • `system()` 返回一个以 '\r' (或 `\n`,我不记得是哪个)结尾的字符串。根据我们下一步想要做什么,需要删除/忽略这个无关的字符。请参阅 `:echo system('echo "foo"')."#"` (2认同)