【问题标题】:Set a Pathvariable in vimrc with whitespace在 vimrc 中使用空格设置路径变量
【发布时间】:2016-06-30 21:00:13
【问题描述】:

我尝试将我的 Vim 设置为使用omnicppcomplete。

我按照c++ code completion的结构一步一步安装它。首先,我总是收到错误“找不到全方位完成 (^0^N^P) 模式”。很难弄清楚,但现在我知道为什么它不起作用了。 这是因为我的 vimrc 中的以下行

"设置标签+=C:\Program\ Files\ (x86)\Vim\vim74\tags\cpp"

Vim 无法处理路径中的空格,但我不知道如何让它工作,除了将标记文件复制到另一个目录(我尝试过,它工作了)。 我尝试了这些选项,但没有任何效果:

  • C:\Program\\ Files\\ (x86)\Vim\vim74\tags\cpp
  • C:/Program\ Files\ (x86)/Vim/vim74/tags/cpp
  • C:\Program\Files(x86)\Vim\vim74\tags\cpp
  • C:\Program\sFiles\s(x86)\Vim\vim74\tags\cpp
  • C:\Program\\sFiles\\s(x86)\Vim\vim74\tags\cpp
  • C:\Program/\sFiles/\s(x86)\Vim\vim74\tags\cpp

如何编写路径以便omnicppcomplete 可以使用标签?

【问题讨论】:

  • 您可能不应该将标签文件放在系统存储 Vim 及其运行时文件的位置。可能最好将其存储在本地用户目录中,例如~/tags/cpp

标签: vim


【解决方案1】:

试试这个:

let &tags .= ',C:\Program\ Files\ (x86)\Vim\vim74\tags\cpp'

选项opt 也可以作为变量&opt 访问,可以使用let 进行操作,可以在表达式中使用,等等。与set 不同,let 的语法几乎没有问题。

另外,tags 中的路径必须用逗号分隔。

【讨论】:

  • 这种方式很好用,有了你的解释,我对 vim 的理解更好一点:)
  • @AKludges 它有效,您只需要找出相关的转义。祝你好运。
  • 谢谢@lcd047,我会改用:let,它更强大,不需要转义:D
【解决方案2】:

:help option-backslash。使用 :set 命令时,您需要转义每个反斜杠、每个空格字符,因此您需要 三个 反斜杠来设置带空格的路径! IE。 set tags+=C:\\Program\\\ Files\\\ (x86)\\Vim\\vim74\\tags\\cpp

有时更好的方法是使用:let 命令,这样您就可以使用单引号字符串而无需进行太多转义。例如:let &tags.=',C:\Program\ Files\ (x86)\Vim\vim74\tags\cpp'

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。尝试在路径中使用/,并像这样'\' 转义空格。 例如,我在 vimrc 中添加了这一行:

    set rtp=C:/Program\ Files\ (x86)/Vim/vim74/vim.exe
    

    如果你命令:echo &rtp,你可以看到:

    C:/Program Files (x86)/Vim/vim74/vim.exe
    

    请注意,空格前没有\

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 2017-06-02
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 2013-03-22
      • 1970-01-01
      相关资源
      最近更新 更多