本文由Librant發表git
若是說在Linux環境下,什麼編輯器最好用,若是我說是VIM,估計會有一大部分人嗤之以鼻,怎麼可能。VIM多是他用過衆多編輯器最難用的一個。在我司用的是雲虛擬機,說實話吧,這裏吐槽一下,是真的卡,沒開幾個網頁,打開幾個軟件就卡的不要不要的,後來碼代碼的時候,能用Linux機器我就儘可能使用Linux環境,若是讀者正好也是一名Gopher的話,那我就強烈建議你使用VIM,Vim-go是當前使用最爲普遍的用於搭建Golang開發環境的vim插件。好了,廢話很少說,看我搭建好的界面吧。github
圖 Go-Vim界面golang
看到這個界面,讀者是否是不認識了,這就對了,是否是以爲很炫酷,其實Vim有不少的插件,能夠把Vim打造的很是棒,等讀者查閱相關資料,清楚Vim的各類參數的時候,就能夠根據本身的喜愛,搭建不一樣風格的Go開發環境啦。So廢話很少說,開整。(建議先看完《跟我學Docker》的第一章部分)ubuntu
能成功從gitHub拉取代碼,Go編譯器安裝完成以後,就能夠在搭建Go-Vim啦。首先是在當前用戶的HOME目錄下建立 .vim 目錄和 .vimrc 文件:vim
librant@ubuntu:~$ mkdir .vim編輯器
librant@ubuntu:~$ touch .vimrc工具
建立完成以後,進入到 .vim 中,下載插件 Vim 的插件管理器bundle:google
librant@ubuntu:~/.vim$ mkdir bundle.net
而後進入到 bundle 目錄中,安裝Vundle.vim:插件
librant@ubuntu:~/.vim/bundle$ git clone git clone https://github.com/VundleVim/Vundle.vim.git
下載完成以後,會在當前目錄下生成 Vundle.vim 目錄
一樣進入到 bundle 目錄中,安裝Vim-go:
librant@ubuntu:~/.vim/bundle$ git clone https://github.com/fatih/vim-go.git
下載完成以後,會在當前目錄下生成 vim-go 目錄
~/(用戶$HOME) 目錄下已經有 .vimrc文件就不須要再建立了。(" 爲註釋部分)。
在 .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
保存後,退出。
繼續編輯 .vimrc文件,在call vundle#begin()和call vundle#end()之間再添加以下配置:
Plugin 'fatih/vim-go'
保存後,從新打開 vim 編輯器,在命令行的模式輸入:PluginInstall
:PluginInstall
執行以後會在左側出現須要安裝的插件列表,右側是.vimrc文件。如圖1-2-2所示:
圖 1-2-2 Vim插件安裝界面
剛執行時,左下角會出現 Processing的過程,須要稍微等一下子,這是在下載代碼,安裝完成以後,左下角將出現Done!的單詞,表示已經安裝完成。
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.git
errcheck: https://github.com/kisielk/errcheck.git
gotags: https://github.com/jstemmer/gotags.git
(缺乏什麼工具,基本均可以找到的,這裏就不一一列舉了)
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/molokai.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
須要配置其餘的主題,只須要設置相應的主題名稱。
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-snippets.git
SirVer/ultisnips: https://github.com/SirVer/ultisnips.git
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/nerdtree.git
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/tagbar.git
delimitMate是自動補全引號(單引號/雙引號/反引號), 括號(()[]{})的插件。
在 .vimrc中的配置以下:
Plugin 'Raimondi/delimitMate'
gitHub的代碼路徑以下所示:
Raimondi/delimitMate: https://github.com/Raimondi/delimitMate.git