最好用的編輯器之一:Vim-Go環境搭建
本文由Librant發表
如果說在Linux環境下,什麼編輯器最好用,如果我說是VIM,估計會有一大部分人嗤之以鼻,怎麼可能。VIM可能是他用過眾多編輯器最難用的一個。在我司用的是雲虛擬機器,說實話吧,這裡吐槽一下,是真的卡,沒開幾個網頁,開啟幾個軟體就卡的不要不要的,後來碼程式碼的時候,能用Linux機器我就儘量使用Linux環境,如果讀者正好也是一名Gopher的話,那我就強烈建議你使用VIM,Vim-go是當前使用最為廣泛的用於搭建Golang開發環境的vim外掛。好了,廢話不多說,看我搭建好的介面吧。

圖 Go-Vim介面
看到這個介面,讀者是不是不認識了,這就對了,是不是覺得很炫酷,其實Vim有很多的外掛,可以把Vim打造的非常棒,等讀者查閱相關資料,清楚Vim的各種引數的時候,就可以根據自己的喜好,搭建不同風格的Go開發環境啦。So廢話不多說,開整。(建議先看完《跟我學Docker》的第一章部分)
1.1 環境準備
能成功從gitHub拉取程式碼,Go編譯器安裝完成之後,就可以在搭建Go-Vim啦。首先是在當前使用者的HOME目錄下建立 .vim 目錄和 .vimrc 檔案:
librant@ubuntu:~$ mkdir .vim
librant@ubuntu:~$ touch .vimrc
建立完成之後,進入到 .vim 中,下載外掛 Vim 的外掛管理器bundle:
librant@ubuntu:~/.vim$ mkdir bundle
然後進入到 bundle 目錄中,安裝Vundle.vim:
librant@ubuntu:~/.vim/bundle$ git clone git clone ofollow,noindex"> https:// github.com/VundleVim/Vu ndle.vim.git
下載完成之後,會在當前目錄下生成 Vundle.vim 目錄
同樣進入到 bundle 目錄中,安裝Vim-go:
librant@ubuntu:~/.vim/bundle$ git clone https:// github.com/fatih/vim-go .git
下載完成之後,會在當前目錄下生成 vim-go 目錄
1.2 外掛安裝
~/(使用者$HOME) 目錄下已經有 .vimrc檔案就不需要再建立了。( " 為註釋部分)。
1.2.1 安裝Vundle.vim
在 .vimrc 檔案中新增如下配置:
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim'
call vundle#end()
filetype plugin indent on
儲存後,退出。
1.2.2 安裝Vim-go
繼續編輯 .vimrc檔案,在call vundle#begin()和call vundle#end()之間再新增如下配置:
Plugin 'fatih/vim-go'
儲存後,重新開啟 vim 編輯器,在命令列的模式輸入: PluginInstall
:PluginInstall
執行之後會在左側出現需要安裝的外掛列表,右側是.vimrc檔案。如圖1-2-2所示:

圖 1-2-2 Vim外掛安裝介面
剛執行時,左下角會出現 Processing的過程,需要稍微等一會兒,這是在下載程式碼,安裝完成之後,左下角將出現Done!的單詞,表示已經安裝完成。
1.2.3 安裝 go.tools Binaries
Vim-go安裝中需要使用到Go的相關的二進位制工具。由於歷史的原因,在google上的工具是無法自行下載安裝的,在gitHub上的工具是可以安裝成功的。
首先開啟 .vimrc 檔案,切換到命令列模式,執行 GoInstallBinaries 命令自行安裝。
:GoInstallBinaries
等待 Vim-go依賴的工具自動安裝,如果安裝成功後,會在 $GOPATH/bin 目錄下生成。安裝完成後如圖1-2-3所示:

圖 1-3-2 vim-go依賴的命令檔案
由於有些命令檔案是無法自動安裝完成,這就需要手動進行安裝啦。首先對比目錄,看缺少哪些命令沒有安裝完成,然後去gitHub上搜索,找到對應的命令原始碼之後,使用git clone 下載到本地,然後使用 go install命令進行安裝即可。前面已經講解過如何安裝啦,這裡就不再贅述。
相關工具的gitHub路徑:
golint: https:// github.com/golang/lint. git
gocode: https:// github.com/nsf/gocode.g it
errcheck: https:// github.com/kisielk/errc heck.git
gotags: https:// github.com/jstemmer/got ags.git
(缺少什麼工具,基本都可以找到的,這裡就不一一列舉了)
1.3 VIM主題顏色
Vim的主題顏色儲存在 /usr/share/vim/vim80/colors 目錄下儲存,如果目錄下沒有的主題,就需要自己進行下載了。下載到此目錄的顏色主題,將可以被所有使用者使用,如果只需要在當前使用者下使用,可以將下載的主題放在 ~/.vim/colors 目錄下即可。個人比較喜歡 molokai 主題風格,下面就簡單介紹如何下載這個主題吧。
1)在gitHub上搜索 molokai 主題,找到主題的git倉庫 tomasr / molokai
2)進入到 .vim目錄下,使用git clone 下載主題
librant@ubuntu:~/.vim$ git clone https:// github.com/tomasr/molok ai.git
3)下載完成之後,拷貝 molokai/colors/molokai.vim 檔案到 ~/.vim/colors 目錄下
4)配置 .vimrc 檔案,在檔案中紅新增如下資訊:
set t_Co=256
colorscheme molokai
let g:molokai_original = 1
let g:rehash256 = 1
需要配置其他的主題,只需要設定相應的主題名稱。
1.4 其他外掛安裝
1.4.1 SirVer/ultisnips
UltiSnips是Vim的程式碼片段工具,它只是一個引擎,它需要和 vim-snippets 搭配使用。vim-snippets預定義了幾十種語言常用的程式碼模板,位於 ~/.vim/bundle/vim-snippets/UltiSnips/ ,UltiSnips 有一套自己的程式碼模板語法規則。
在 .vimrc中的配置如下:
Plugin 'honza/vim-snippets'
Plugin 'SirVer/ultisnips'
"插入模式下直接通過<C-z>鍵來觸發UltiSnips的程式碼塊補全
let g:UltiSnipsExpandTrigger="<C-z>"
"彈出UltiSnips的可用列表,由於不常用, 所以這裡設定成了特殊的<C-i>對映
let g:UltiSnipsListSnippets="<C-i>"
"<C-f>跳轉的到下一個程式碼塊可編輯區
let g:UltiSnipsJumpForwardTrigger="<C-f>"
"<C-b>跳轉到上一個程式碼塊可編輯區
let g:UltiSnipsJumpBackwardTrigger="<C-b>"
增加位置如Go-vim的位置一致,安裝過程也是類似的。
gitHub的程式碼路徑如下所示:
honza/vim-snippets: https:// github.com/honza/vim-sn ippets.git
SirVer/ultisnips: https:// github.com/SirVer/ultis nips.git
1.4.2 scrooloose / nerdtree
NERDTree的作用就是列出當前路徑的目錄樹,一般IDE都是有的。可以方便的瀏覽專案的總體的目錄結構和建立刪除重新命名檔案或檔名。
在 .vimrc中的配置如下:
Plugin 'scrooloose/nerdtree'
" 設定NerdTree
map <F7> :NERDTreeMirror<CR>
map <F7> :NERDTreeToggle<CR>
進入到 vim 後可以按 F7 顯示和隱藏 NERDTree區域。
gitHub的程式碼路徑如下所示:
scrooloose/nerdtree: https:// github.com/scrooloose/n erdtree.git
1.4.3 majutsushi / tagbar
tagbar可以將正在編輯的檔案生成一個大綱檢視,包含介面/方法/變數等, 可以選中快速跳轉到目標位置, 編輯大檔案特別有用。
由於tagbar是基於ctags,需要先安裝ctags:
root@ubuntu:/# apt-get install ctags
在 .vimrc中的配置如下:
"F9觸發,設定寬度為30
let g:tagbar_width = 30
nmap <F9> :TagbarToggle<CR>
"開啟自動預覽(隨著游標在標籤上的移動,頂部會出現一個實時的預覽視窗)
let g:tagbar_autopreview = 1
"關閉排序,即按標籤本身在檔案中的位置排序
let g:tagbar_sort = 0
進入到 vim 後可以按 F9 開啟和關閉tagbar功能 。
gitHub的程式碼路徑如下所示:
majutsushi/tagbar: https:// github.com/majutsushi/t agbar.git
1.4.4 Raimondi / delimitMate
delimitMate是自動補全引號(單引號/雙引號/反引號), 括號(()[]{})的外掛。
在 .vimrc中的配置如下:
Plugin 'Raimondi/delimitMate'
gitHub的程式碼路徑如下所示:
Raimondi/delimitMate: https:// github.com/Raimondi/del imitMate.git
GO語言除錯利器——dlv
vim建立程式檔案自動新增頭部註釋
附錄:VIM引數設定解析
- set nocompatible:不要使用vi的鍵盤模式,而是vim自己的
- set number:顯示行號
- set showcmd:輸入的命令顯示出來
- syntax on:開啟語法高亮
- filetype on:檢測檔案型別