VIM外掛管理
vim for golang
還在抱怨vim沒有好用的IDE嗎?本文介紹一款vim外掛管理利器Vundle,以及常用的vim外掛。
- vim外掛管理器Vundle
- 常用的vim外掛
前期準備:
- 安裝vim
sudo apt-get install vim
- 安裝go
sudo apt install golang-go
- go環境配置
go安裝好了,可以用go env看一下環境變數。
- GOROOT: 就是go的安裝目錄,一般不用改
- GOPATH: 可以理解為工作目錄
- GOBIN:
GOPATH目錄下,一般有三個子目錄
—bin:可執行檔案路徑
—pkg:golang編譯包時,生成的.a檔案目錄
—src:原始碼目錄。
在~/目錄下,把這必要環境變數寫到檔案.bash_profile中,如果沒有.bash_profile,建立一個。
export GOPATH=/home/zdchu/go/gopath
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
使配置生效:
source ~/.bash_profile
一、vim外掛管理器Vundle
Vundle是基於Git倉庫的外掛管理軟體。Vundle將外掛的安裝簡化為類似yum軟體安裝的過程
只要:PluginInstall外掛就安裝完了,:PluginClean之後外掛就解除安裝了。
1. Vundle安裝
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
2. vimrc配置
在.vimrc末尾,加上vundle配置:
set nocompatible " be iMproved, required filetype off " required " 啟用vundle來管理vim外掛 set rtp+=~/.vim/bundle/Vundle.vim " vundle 管理的外掛列表須位於 vundle#begin() 和 vundle#end() 之間 call vundle#begin() Plugin 'VundleVim/Vundle.vim' call vundle#end() filetype plugin on
二、常用的vim外掛
1. NERDTree------>檔案目錄樹
-
簡介
NERDTree是一個針對資料夾以目錄樹的形式呈現的外掛。 -
配置
Plugin 'scrooloose/nerdtree'
map <F7> :NERDTreeToggle<CR> "F7開啟NERDTree
let NERDTreeWinSize = 25 "視窗大小
let g:NERDTreeWinPos="left" "視窗在左側
2. vim-go------>強大到可怕
- 簡介
vim-go是針對go定製的強大外掛。見vim-go github - 基本配置
Plugin 'fatih/vim-go'
安裝好vim-go後,開啟.go檔案時,基礎功能如語法高亮有了,儲存時自動gofmt也有了,一些高階功能如自動Import缺失的package,自動補全,函式跳轉等功能還沒有,需要安裝vim-go依賴庫
- vim-go依賴庫
用命令 :GoInstallBinaries安裝。如果已經安裝好了,可以用:GoUpdateBinaries更新。
在國內,一般是翻牆才能成功安裝。
解決辦法:先下載工具包,再安裝
mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/tools.git
git clone https://github.com/golang/lint.git
:GoInstallBinaries
成功安裝在GOAPTH/bin目錄下。
注:我們也可以去https://gopm.io/這裡下載包。
強大的指導手冊,一定要看哦
以上配置好,函式跳轉godef等強大功能就可以用啦,但是你會發現函式和例項都是一個顏色,不能一眼就看出來哪個是函式,以下是高階配置
在這裡插入程式碼片
2. YouCompleteMe—>實時自動補全
- 簡介
寫程式碼時,實時自動補全功能。YCM - 配置
Plugin 'Valloric/YouCompleteMe'
###2. Ctags------>函式跳
ctags:大多數 Unix 系統都能找到。只支援 C。只有基本的功能;
Exuberant_ctags:它支援 C、C++、Java、Fortran、Python、Eiffel、PHP等41種語言
總結來講,Exuberant_ctags其它就是ctags的多語言實現。
安裝:
sudo apt-get install exuberant-ctags
進入專案目錄,執行:
ctags -R
注:在更新專案程式碼時,都要執行這句哦。
此時,在當前目錄下生成一個tags檔案,再執行
vim
: set tags = 專案目錄/tags
該命令將tags檔案加入到vim中來, 你也可以將這句話放到~/.vimrc中去, 如果你經常在這個工程程式設計的話.
最佳實踐:
pull/update程式碼後,在專案程式碼目錄下,執行以下:
ctags -R
vim
:set tags = ./tags
常見用法
ctrl+ ]:跳到游標所在函式或者結構體的定義處
ctrl+ t:返回查詢或跳轉(其實可以用ctrl+o返回,ctrl+i再進入)
3. Tagbar------>變數及函式列表
tagbar是一個taglist的替代品,比taglist更適合c++使用,函式能夠按類區分,支援按類摺疊顯示等,顯示結果清晰簡潔
tagbar/taglist做的僅僅是將tag檔案中的內容解析完後顯示在Vim上而已。tag掃描以及資料檔案的生成則是由ctags(Exuberant Ctags)這一工具完成的,所以在使用tagbar/taglist之前,你的電腦需要裝有ctags。
安裝ctags
sudo apt-get install exuberant-ctags
- 效果圖
- 配置
Plugin 'majutsushi/tagbar' "taglist的增強版,依賴於ctags,用來檢視函式,通常放在右側
" for tagbar plugin
"設定tagbar使用的ctags的外掛,必須要設定對,這一步也不一定,安裝ctags時會自動加環境變數
let g:tagbar_ctags_bin='/usr/bin/ctags'
let g:tagbar_width=30 "設定tagbar的視窗寬度
let g:tagbar_right=1 "設定tagbar的視窗顯示在右側,其它預設也是在右側
let g:tagbar_sort = 0 "設定標籤不排序,預設排序
"開啟檔案自動 開啟tagbar
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx,*.java call tagbar#autoopen()
map <F8> :TagbarToggle<CR> " F8開啟Tagbar