我在不同的机器上使用 vim 并希望在它们之间保持我的配置同步,所以我尝试了众所周知的方法,即使用病原体安装不同的 vim 插件,将它们保持为 git 子模块,例如此处所述。
现在我的.vim
文件夹是一个 git repo,其中包含.vim/bundle
. 我将该主存储库上传到 bitbucket 并从我的其他机器上克隆它,经过一些之后git submodule init
,git submodule update
我在所有这些机器中都获得了所需的相同配置。
现在,当我需要对其中一些插件进行一些自定义时,问题就来了。例如,一些子模块只是 vim 颜色方案。假设我想改变,说出评论的颜色。这样做的正确方法是什么?
我想到了一些想法:
- 如果我直接修改
.vim/bundle/vim-github-colorscheme/colors
(例如),然后 AFAIK,我应该将这些更改推送到主vim-github-colorscheme
仓库,我不能这样做,而且无论如何都是荒谬的。我的定制本质上是私人的。但是,如果我不与子模块 repo 同步,这些更改将不会从我的其他机器上看到。 - 如果我将自己的配色方案自定义保留在 中
.vim/colors
,那么这些更改将成为主 repo 的一部分,并且它们将很容易在机器之间共享,但这打破了病原体的“捆绑”理念。此外,我不清楚如何以这种方式完成其他类型的自定义(例如,修改 snipMate 的一些片段,甚至修改插件的代码) - 我是否应该制作插件的私有分支,将其上传到 bitbucket,并将其用作子模块而不是原始模块?这样至少我可以正确地执行 1. 中的方法,但它看起来不是一个好的选择。特别是因为我事先不知道是否需要自定义插件,所以这将迫使我为我安装的每个新 vim 插件创建一个分支,以防万一。
- 我可以将捆绑包的代码保存在一个 git repo 下,即根本不使用子模块。这将使我可以自由地修改它们,将修改与我的 bitbucket 存储库同步,并使用单个
git pull
. 但是这样一来,当插件的原始源代码发生更改时,很难将其与我自己的修改合并。
我的想法用完了,出于某种原因,以上所有这些对我来说似乎都是错误的。使用 git 和病原体的人如何管理这种情况?