这是我的设置:
- 我的 .vim 目录由 git 进行源代码管理
- 我使用 Pathogen 来管理我的插件
- 我的 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