跳到主内容

神奇的 pathogen

pathogen + git

pathogen + git 真是太强大了.

以前安装vim插件的话, 里面的内容要分装到几个目录中, 例如doc, plugin等. 升级的时候尤其麻烦. 而pathogenvim的一个插件, 装了它以后, 其他插件就可以放在.vim/bundle里面单独的一个目录中即可.

现在vim 插件几乎都被搬到github上. 通过git可以很容易就下载/更新vim插件, 因为在pathogen的帮助下, 每个插件都是一个单独的目录了, 互相之间不影响.

vim scripts提到一些管理的工具.

git module

现在.vim/bundle里面有若干个目录, 每个目录都是一个git管理的仓库, 每次更新都要手工更新, 当然写脚本也可以, 只是感觉不够优美.

今天看到一篇文章, 里面提到"git module", 就是一个git仓库中还可以嵌入其他独立的仓库. 这个用来管理整个vim配置目录, 甚是完美. 例如我把.vim作为一个仓库, 而从githubclone下来各种插件到.vim/bundle中. 我从其他机器上克隆的时候, 就可以自动把这些插件也下载下来.

假设我有项目super, 其中有4submodules, a, b, c, d.

初始化modules

# add remote repo
$ git submodule add path_to_repo local_subdirectory/name
# add submodule repo urls to config
$ git submodule init
# clone and checkout
$ git submodule update

更新

(在super的目录中)

$ git pull
$ git submodule update
$ git submodule foreach git pull # 如果上面一行不行

在其他地方clone

$ git clone path_to_remote_repo
$ git submodule init
$ git submodule update # 以后只要这个即可

移动模块

修改模块的名字, 见stackoverflow:

$ vim .gitmodules # 修改对应路径
$ mv oldpath newpath
$ git rm oldpath
$ git add newpath
$ git submodule sync

注意

  • 子模块可以看作只读的. 要修改也可以, 签出"master"branch即可.
  • 删除module有点麻烦, 目前不能自动删除, 步骤和修改模块名字差不多.

链接