Snipmate + Pathogen + Git - 自定义代码片段在 Windows 上不起作用

Snipmate + Pathogen + Git - 自定义代码片段在 Windows 上不起作用

这是我的设置:

  1. 我的 .vim 目录由 git 进行源代码管理
  2. 我使用 Pathogen 来管理我的插件
  3. 我的 SnipMate 插件是 git 子模块,位于.vim/bundle/snipmate

这意味着我无法真正编辑 中的片段,.vim/bundle/snipmate/snippets因为它们没有被跟踪。我发现我可以在 中定义自己的自定义片段.vim/snippets,或者创建一个新目录.vim/bundle/snipmate-custom/snippets/并在那里定义它们。

这在 Linux 上效果很好。例如,我可以html.snippets同时拥有原始文件.vim/bundle/snipmate/snippets和我自己的文件html.snippets.vim/snippets/而 vim 将同时使用这两个文件。

在 Windows 上,我注意到创建另一个代码片段目录(在.vim/snippets/或在).vim/bundle/snipmate-custom/snippets/会破坏插件。制表符完成不再起作用 - 它会忽略插件附带的原始代码片段和新存储库中的代码片段。

知道为什么会发生这种情况吗?

我在运行 Vista,我的 vim 配置在 中%USERPROFILE%\.vim。我使用以下命令将 vimfiles 文件夹符号链接到该目录:

mklink /d vimfiles .vim

所有其他插件都可以使用。如果目录不存在,Shipmate 可以完美运行.vim/snippets。上述设置在 Ubuntu 和 Mac 上运行良好。知道为什么它在 Windows 上会崩溃吗?

编辑

我可能已经回答了自己的问题。我设法通过明确告诉 snipmate 要使用哪些目录来解决此问题:

   if has('win32')
      let g:snippets_dir="c:/Users/me/.vim/bundle/snipmate/snippets/,
                          c:/Users/me/.vim/bundle/snipmate-custom/snippets"
   endif

虽然不是最优雅的解决方案,但确实有效。如果你找到了更好的方法,请告诉我。

答案1

我已经回答了自己的问题。我设法通过明确告诉 snipmate 要使用哪些目录来解决此问题:

   if has('win32')
      let g:snippets_dir="c:/Users/me/.vim/bundle/snipmate/snippets/,
                          c:/Users/me/.vim/bundle/snipmate-custom/snippets"
   endif

相关内容