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