插件安裝
我的配置有:
標簽導航(tagbar和ctags)、語法檢測(syntastic)、文件搜索(ctrlp)、目錄樹導航(nerdtree)、狀態欄美化(vim-powerline)、主題風格(solarized)、python相關(jedi-vim和python-mode)、括號匹配高亮(rainbow_parentheses)、可視化縮進(vim-indent-guides)。
還有一個最重要的就是插件管理工具vundle。
1、安裝vundle
1
|
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
|
2、.vimrc配置文件
~/.vimrc是VIM的配置文件,如果這個配置文件不存在,我們可以自行創建(命令:vi .vimrc)。安裝好了vundle,需要在~/.vimrc配置文件中添加vundle支持。所以,在~/.vimrc中添加代碼如下:
1
2
3
4
5
6
7
|
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
if filereadable(expand("~/.vimrc.bundles"))
source ~/.vimrc.bundles
endif
|
為了防止配置文件太亂,我們可以通過~/.vimrc.bundles管理我們安裝的插件。
3、.vimrc.bundles配置文件
首先創建文件~/.vimrc.bundles,然后添加代碼如下:
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
|
if &compatible
set nocompatible
end
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
"
Let Vundle manage Vundle
Bundle 'gmarik/vundle'
"
Define bundles via Github repos
"
標簽導航
Bundle 'majutsushi/tagbar'
Bundle 'vim-scripts/ctags.vim'
"
靜態代碼分析
Bundle 'scrooloose/syntastic'
"
文件搜索
Bundle 'kien/ctrlp.vim'
"
目錄樹導航
Bundle "scrooloose/nerdtree"
"
美化狀態欄
Bundle "Lokaltog/vim-powerline"
"
主題風格
Bundle "altercation/vim-colors-solarized"
"
python自動補全
Bundle 'davidhalter/jedi-vim'
Bundle "klen/python-mode"
"
括號匹配高亮
Bundle 'kien/rainbow_parentheses.vim'
"
可視化縮進
Bundle 'nathanaelkane/vim-indent-guides'
if filereadable(expand("~/.vimrc.bundles.local"))
source ~/.vimrc.bundles.local
endif
filetype on
|
如上述代碼所示,我們通過Bundle指定各個插件在Github的地址,填寫規則是"用戶名/倉庫名"。書寫規則有三種,這里使用的是最常見的一種,其它書寫方法這里就不說了,可以自行百度。
4、安裝插件
我們已經指定好了各個插件的路徑,接下里就是安裝各個插件了。在shell中輸入vim,進入命令行模式輸入BundleInstall。
運行這個命令就開始自行安裝我們之前指定的各個插件了。這個過程需要連網,下載並安裝好各個插件之后會提示Done!
注意:由於tagbar依賴於ctags,所以我們還需要用指令安裝ctags:
1
|
sudo apt-get install ctags
|
三、插件配置
1、基礎配置
已經安裝好了各個插件,接下里就可以直接用了嗎?答案是否定的,我們還需要繼續對自己安裝的插件進行配置。配置這里也很簡單,下面是我的配置,編寫~/.vimrc:
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
|
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
if filereadable(expand("~/.vimrc.bundles"))
source ~/.vimrc.bundles
endif
" tagbar標簽導航
nmap <Leader>tb :TagbarToggle<CR>
let g:tagbar_ctags_bin='/usr/bin/ctags'
let g:tagbar_width=30
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()
let g:jedi#auto_initialization = 1
" 主題 solarized
let g:solarized_termtrans=1
let g:solarized_contrast="normal"
let g:solarized_visibility="normal"
" 配色方案
set background=dark
set t_Co=256
colorscheme solarized
" 目錄文件導航NERD-Tree
" \nt 打開nerdree窗口,在左側欄顯示
nmap <leader>nt :NERDTree<CR>
let NERDTreeHighlightCursorline=1
let NERDTreeIgnore=[ '\.pyc$', '\.pyo$', '\.obj$', '\.o$', '\.so$', '\.egg$', '^\.git$', '^\.svn$', '^\.hg$' ]
let g:netrw_home='~/bak'
"close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | end
" ctrlp文件搜索
" 打開ctrlp搜索
let g:ctrlp_map = '<leader>ff'
let g:ctrlp_cmd = 'CtrlP'
" 相當於mru功能,show recently opened files
map <leader>fp :CtrlPMRU<CR>
" set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux"
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn|rvm)$',
\ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz)$',
\ }
"\ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
let g:ctrlp_working_path_mode=0
let g:ctrlp_match_window_bottom=1
let g:ctrlp_max_height=15
let g:ctrlp_match_window_reversed=0
let g:ctrlp_mruf_max=500
let g:ctrlp_follow_symlinks=1
" vim-powerline美化狀態
" let g:Powerline_symbols = 'fancy'
let g:Powerline_symbols = 'unicode'
" 括號匹配高亮
let g:rbpt_colorpairs = [
\ ['brown', 'RoyalBlue3'],
\ ['Darkblue', 'SeaGreen3'],
\ ['darkgray', 'DarkOrchid3'],
\ ['darkgreen', 'firebrick3'],
\ ['darkcyan', 'RoyalBlue3'],
\ ['darkred', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['brown', 'firebrick3'],
\ ['gray', 'RoyalBlue3'],
\ ['black', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['Darkblue', 'firebrick3'],
\ ['darkgreen', 'RoyalBlue3'],
\ ['darkcyan', 'SeaGreen3'],
\ ['darkred', 'DarkOrchid3'],
\ ['red', 'firebrick3'],
\ ]
let g:rbpt_max = 40
let g:rbpt_loadcmd_toggle = 0
" 可視化縮進
let g:indent_guides_enable_on_vim_startup = 0 " 默認關閉
let g:indent_guides_guide_size = 1 " 指定對齊線的尺寸
let g:indent_guides_start_level = 2 " 從第二層開始可視化顯示縮進
|
你可以根據自己的喜好設置快捷鍵,<leader>是按鍵\,根據我的配置。在VIM的正常模式下:
- 依次按鍵\tb,就會調出標簽導航;
- 依次按鍵\ff,就會調出文件搜索;
- 依次按鍵\nt,就會調出目錄導航。
2、運行配置
這些基礎配置已經完成,但是我想在VIM下像在IDE中一樣,按一個鍵就運行當前編輯的python文件,並查看運行結果,這可以做到嗎?
沒問題!
在~/.vimrc最后一行追擊代碼如下:
1
2
|
"
運行文件
map <F5> :w<cr>:r!python3 %<cr>
|
上述代碼的意思就是,在VIM的正常模式下,按F5就會保存文件並使用python3運行當前文件,並將結果輸出到當前界面。
注意,:!python3表示運行系統命令python3,如果你沒有安裝python2和python3共存,此處只寫python即可。
這樣我們就可以邊編輯邊查看運行結果了:
運行完之后,依然可以在VIM的正常模式下按u,撤回這個輸出操作,這樣輸出結果就撤回了,我們就可以繼續編寫自己的代碼了。
如果我們希望自己的vim具有自動補全功能,我們需要在 .vimrc 文件中添加:命令(vim .vimrc)-> a ->粘貼
filetype plugin on let g:pydiction_location = '~/.vim/tools/pydiction/complete-dict'
四、總結
VIM很好用,很強大,用上了有種愛不釋手的感覺。插件不用安裝太多,適合自己的就行,根據自己的需求進行配置,編輯快捷鍵,真的很方便。
對於自己增加的需求,如果不知道安裝什么插件,可以自行百度,度娘會告訴你想知道的東西,當然在github搜索也很方便。