当你的Vim命令比较熟了,你总是想尝试一些新的东西。折腾各种各样的Vim插件便成了那几天最愉快的消遣。Vim就好像一个充满各种插口的超级玩具,你总能组合出属于自己的那款。但有时候不得不说在配置Vim的时候的时间开销是很大的。所以使用Git这样的工具来托管你的Vim插件是一个很好的选择。Vim的插件管理方案有许多,比如pathogenVundle。我选择了pathogen,因为恰巧先读了一片关于用pathogen配置Vim的文章罢了,好了废话少说,我们进入主题。

第一步:安装pathogen

1
2
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

上面的代码会在你的跟目录创建一个.vim/文件夹,并在里面创建相应的文件夹:autoload/bundle/最后在autoload/文件夹中下载pathogen的配置文件pathogen.vim

1
execute pathogen#infect()

然后,将上面的代码加到你的Vim配置文件.vimrc里。如果是第一次倒腾Vim插件你需要在根目录创建一个.vimrc。下面是我的Vim配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"切换文字的encode格式,防止中文乱码
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
"语法高亮
syntax enable
"显示行数
set nu
"设置tab大小为4个空格
set tabstop=4
set shiftwidth=4
"显示相对行数
set rnu
"允许使用鼠标
set mouse=a "enable mouse support
"设置pathogen Runtime
runtime bundle/vim-pathogen.git/autoload/pathogen.vim
execute pathogen#infect()
"sensible 插件启用(需要先把sensible插件下载到bundle文件夹内
runtime! plugin/sensible.vim
"检查文件格式并根据文件格式缩进
filetype plugin on
filetype plugin indent on
"set 配置默认的python缩紧
augroup python_files
autocmd!
autocmd FileType python setlocal noexpandtab
autocmd FileType python set tabstop=4
autocmd FileType python set shiftwidth=4
augroup END
"配置主题
colorscheme twilight256
"设置tagbar插件的快捷键(需要先安装tagbar插件)
nmap <F8> :TagbarToggle<CR>
"set the initial width of the tagbar
let g:tagbar_width=25
"配置NerdTree插件(需要先安装NerdTree插件和使用homebrew安装ctags)
map <F9> :NERDTreeToggle<CR>
let NERDTreeIgnore=['.class'] "avoid java class file display in nerdtree
"配置syntastic插件(需要先安装syntastic插件)
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
"let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
"配置 ctr-p 菜单颜色
hi Pmenu ctermfg=38 ctermbg=235 cterm=None ""font
hi PmenuSel ctermfg=7 ctermbg=235 cterm=Bold ""selection
hi PmenuSbar ctermfg=248 ctermbg=242 cterm=Bold ""scorll bar space
hi PmenuThumb ctermfg=248 ctermbg=7 cterm=None ""scorll bar
"一些快捷键配置
let mapleader = "\<Space>"
nmap <leader>t :TagbarToggle<CR>
nmap <leader>n :NERDTreeToggle<CR>
nmap <leader>[ :bp<CR>
nmap <leader>] :bn<CR>
"配置Dash插件(需要安装Dash插件)
:nmap <leader>d :Dash<CR>
"配置airline主题
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
let g:airline_powerline_fonts = 1
"配置markdown-preview (需要安装mardown-preview插件和使用homebrew安装grip)
let vim_markdown_preview_github=1
let vim_markdown_preview_browser='Google Chrome'
let vim_markdown_preview_hotkey='<C-m>'

第二步:安装插件

pathogen管理插件很简单,只要把插件统一安装在.vim/bundle路径里面就好了。然后根据插件的需要,在.vimrc文件里面进行配置。有些插件比如NerdTreemarkdown-preview可能还需要第三方插件的支持,大都可以通过Homebrew找到。所以你基本要做的是在你的.vim/bundle路径里面:

1
git clone <vim-plugin-repo-link>

第三步:用Git管理Vim配置文件和插件

这一步主要运用的技术是Linux/Unix的ln命令来连接两个文件。首先在.vim/文件里建一个vimrc,然后输入:

1
ln -s ~/.vim/vimrc ~/.vimrc

把根目录的.vimrc文件和.vim/vimrc文件进行同步链接,然后你会发现,在跟目录的.vimrc文件变成了.vimrc@文件,这说明此文件跟某一文件进行了链接。你可以试一下,在跟目录下的.vimrc@文件中做的任何更改会自动同步到.vim/vimrc文件中,反之亦然。然后,我们需要用Git的submodule命令把下载的Vim插件储存到子模块中。下面是关于submodule的基本操作。

  • 在.vim路径中初始化submodule
1
git submodule init

初始化submodule后,会在相应目录的到.gitmodules的文件,这个文件的格式是

1
2
3
[submodule "子模块名称"]
path = 子模块路径
url = 子模块链接
  • submodule添加插件链接:
1
git submodule add <plug-in link> bundle/<plug-in filename>

举个例子,如果你想把vim-sensible添加在子模块中:

1
git submodule add https://github.com/tpope/vim-sensible.git bundle/vim-sensible
  • submodule删除插件链接:
1
2
git submoudle deinit <submodule name>
git rm (-f or --cached) <submodule name>
  • 这里删除有两种模式-f: delete file, –cached: leave file to local

在更改了子模块的目录后,可以通过访问.gitmodules查看子模块是否更新。完成了对Vim插件子模块的处理后,我们只要把.vim目录里面所有的文件上传到Git就好了,可以选择GitHub或者Bitbucket来托管自己的Git仓库。

第四步:下载并使用自己的Vim插件管理系统

如果你在一台新的mac上,或者你重装了系统,这个Vim插件管理系统就派上用场了,大体步骤如下:

  • clone repo 到你的根目录并命名为.vim/
1
git clone <your repo address> ~/.vim
  • 重新链接配置文件
1
ln -s ~/.vim/vimrc ~/.vimrc
  • 通过submodule命令下载Vim插件
1
2
3
cd ~/.vim
git submodule init
git submodule update

然后你的Vim插件就回来了哇咔咔。这个方法还可以用于保存你的.bash_profile,你也可以参考我的Vim配置管理,have fun。