1

我是 git 的新手,所以问题可能真的很愚蠢,对此感到抱歉。我的意思是,我什至在这里发现了与我非常接近的 stackoverflow 问题,但仍然不明白如何正确解决问题。

我有 github 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文件夹中,该文件夹是子模块,而不是我自己的 repo。当然,我可以clone在那里简单地使用它们,或者甚至创建其中一些的分支,但这似乎不是一个好的解决方案:

  • 可以在 github 上找到我自己的代码与其他代码的混淆;
  • 我不是真的要修改snipmate,我要配置它;
  • 所有这些都使得更新三十部分插件变得复杂甚至不可能。

也许有人可以帮助找到“正确”的答案?

4

2 回答 2

0

您可以从阅读snipmate 的文档开始,该文档指出您自己的片段的默认推荐位置是 (假设您的东西在~/.vim)下~/.vim/snippets/<filetype>.snippets。在插件目录之外,在子模块之外。

是的,Git 子模块很酷,但它们可能不是管理 Vim 配置的完美解决方案。

于 2012-04-07T20:40:44.690 回答
0

我将 snipmate 和病原体与 vim 一起使用。Pathogen 使使用子模块成为可能(而且更容易!)

我的 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 存储库时,我会这样做:

git pull origin master
git submodule update --init

如果我实际上更改了子模块的遥控器(例如,如果我在 github 上分叉了 snipmate 并希望将我的本地仓库指向新的分叉),我更改 .gitmodules 并执行以下操作:

git submodule sync

通过使用子模块,它将更容易更新git submodule git pull origin,更容易修改并将更新推送回维护者。

于 2012-08-02T04:48:32.940 回答