如何从 shell 命令结果中设置 vim 的路径

How can I set path of vim from the shell command result

我想从 .vimrc 自动设置 C++ 头文件路径。 所以我尝试编写 .vimrc 文件,如下所示:

let g:gcpp_headers_path=system("g++ --version | grep g++ | awk '{print \"/usr/include/c++/\"$NF}'")

"if isdirectory(gcpp_headers_path)
  set path+=g:gcpp_headers_path
"endif

从上面的 vimrc 我发现 vim 变量路径设置如下所示:

:set path?
path=.,/usr/include,,,g:gcpp_headers_path

想要的输出如下图:

:set path?
path=.,/usr/include,/usr/include/c++/7.5.0

我希望对此进行审核。有人可以给我建议吗?

F.Y.I。 system()中的命令如下所示:

~$ g++ --version | grep g++ | awk '{print "/usr/include/c++/"$NF}'
/usr/include/c++/7.5.0

对于文档,我正在写我在这里找到的答案:

let g:gcpp_headers_path = system("g++ --version | grep g++ | awk '{print \"/usr/include/c++/\"$NF}'")

execute 'set path+=' . g:gcpp_headers_path

我的 vim 版本是 Vi IMproved 8.0(2016 年 9 月 12 日,2022 年 1 月 20 日编译 02:47:53)

I raised new post for Windows

:set 不计算表达式,因此您不能直接使用变量。你有两个解决方案。

  1. 改用:help :let,它可以计算表达式:

    :let &path .= ',' . g:gcpp_headers_path
    

    备注:

    • 选项名称前的&
    • 不同的运算符,因为我们将原始值(一个字符串)与另一个字符串连接起来,
    • ,,需要将您的自定义路径与已有路径分开,
    • . 连接运算符。
  2. 在执行之前使用 :help :execute 构建正确的 :set 命令:

    :execute 'set path+=' . g:gcpp_headers_path