我是git的新手,所以问题可能真的很愚蠢,对不起。我的意思是,我甚至发现这里的stackoverflow问题非常接近我的,但仍然不明白如何正确解决问题。
我有gifub repo和我的dotfiles,包括vim。我正在使用带有vim的病原体,这样可以自然地获得插件接缝
git submodule add https://github.com/msanders/snipmate.vim.git vim/bundle/snipmate
...
git submodule init
git submodule update
git submodule foreach git submodule init
git submodule foreach git submodule update
我找到了什么地方。最后四个命令我只是添加到我的设置脚本中,每次克隆此repo时都会运行。
第一个问题 git status
始终显示
# modified: vim/bundle/snipmate (untracked content)
# ...
# Changed but not updated:
部分中的和git add vim/bundle/snipmate
没有帮助。这很烦人。
第二个问题我显然不会将 snipmate 片段保留为默认值,我想更改它们,因为病原体片段存储在 snipmate 文件夹中,该文件夹是子模块,而不是我自己的存储库。当然,我可以在那里简单clone
,或者甚至创建其中一些的分叉,但这似乎不是一个好的解决方案:
也许有人可以帮助找到“正确”的答案?
答案 0 :(得分:0)
您可以先阅读snipmate's doc,其中指出您自己的代码段的默认推荐位置是(假设您的内容位于~/.vim
)~/.vim/snippets/<filetype>.snippets
。在插件目录之外,在子模块之外。
是的Git子模块很酷但它们可能不是管理Vim配置的完美解决方案。
答案 1 :(得分:0)
我用vim使用snipmate和病原体。病原体使子模块成为可能(并且更容易!)
我的snipmate插件安装在这里:
.vim/bundle/snipmate
我的片段安装在这里:
.vim/bundle/snipmate-snippets
这里有一个示例代码:
.vim/bundle/snipmate-snippets/snippets/c.snippets
我还有一个特定于工作的回购片段。他们在这里:
.vim/bundle/work/snippets/cpp.snippets
只要你的运行路径(:help rtp
)中有一个片段文件夹,你就会很好。这是病原体的魔力。
要设置我的子模块,我做了:
git submodule add git://github.com/garbas/vim-snipmate.git bundle/snipmate
git submodule add git://github.com/honza/snipmate-snippets.git bundle/snipmate-snippets
当我想更新我的vim repo时,我这样做:
git pull origin master
git submodule update --init
如果我实际更改了子模块的遥控器(比如我在github上分叉了snipmate并希望将我的本地仓库指向新的分支),我改变.gitmodules并执行:
git submodule sync
通过使用子模块,它可以更容易地更新git submodule git pull origin
并更容易修改并将更新推送回维护者。