在 MAC 上安裝、使用 govim 就是那麼樸實無華 | Piece of DevOps
在各式各樣炫爛華麗的 IDE 如雨後春筍般出現後,Vim 的確不太容易排在開發者選擇名單的前面。但 Vim 也是有難以取代的地方,像是我個人特別喜歡能用鍵盤解決一切的感覺。會想使用 Vim 來開發 Golang,除了因為目前開發的程式都不大、想學會用鍵盤控制一切,對我來說最重要的原因就是「潮」。即使用來寫國小文章,也會讓人不明覺厲。
雖然說是用 Vim 來開發 Golang,但這並不代表需要完全土炮一切,因為 Vim 的世界其實是相當有趣的,有各種 Plugin 能優化開發的過程,甚至還能產生類似 GUI 的相關提示。今天要介紹的 govim 就是專為開發 Golang 所使用的 Vim Plugin。
安裝 govim
安裝 govim 的方式在 Github 上有提供 4 種,這邊介紹的是使用 Vim 8 packages 的方式。需要留意的是,安裝 govim 需要 Golang 本版至少為 1.12,Vim 本版至少是 v8.1.1711。有了 brew 的幫助,要達到這兩項要求,其實並不難。
使用 brew 安裝 Golang
目前(2020/04/19)用 brew 直接安裝 Golang 的版本為 1.14.2_1,所以在使用 brew 情況下,只要輕鬆的一行即可達到要求。
$ brew install go
如果已經用 brew 安裝過 Golang 的話呢?則只要使用
brew upgrade 即可將 Golang 的本版更新至 brew 所提供的最新版本:$ brew upgrade go
使用 brew 安裝 vim
目前(2020/04/19)用 brew 直接安裝的 Vim 版本為 8.2,也是高於需求的版本。所以也是直接安裝即可。
$ brew install vim
安裝的過程中,brew 可能會報一些錯誤,需要再下一些指令,或者需要更新 Xcode。遇到這些問題時,brew 都會詳細說明解決方式,基本上,只要照著做就可以解決。唯一比較麻煩的是,我們需要讓新 Vim 蓋過舊的。這時候我們可以使用
brew link 來幫助我們讓原先的 vim ,產生連結至新版本的 vim 執行檔。
$ brew link vim
此時可能會遇到以下得錯誤訊息:
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/man/de/man1/nmap.1
/usr/local/share/man/de/man1 is not writable.
會出現會出現這樣的訊息,可能是因為之前在安裝套件時,改到目錄下的使用者權限(例如使用 sudo 安裝套件)。此時,只需要重新賦予當前使用者權限即可:
sudo chown -R `whoami`:admin /usr/local/share/man/de/man1
現在,我們可以使用 vim -version 來確認目前的 Vim 版本:
$ vim -version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Apr 14 2020 23:43:46)
...
現在我們的 Vim 也符合需求了,那就來安裝 govim 吧!
安裝 govim
到了這一步,因為我們已經安裝了 Vim 8,所以在安裝 govim 上,相對輕鬆很多。在這裡,我們直接使用 Vim 8 packages 的機制來安裝,只需要一行指令即可:
$ git clone https://github.com/govim/govim.git ~/.vim/pack/plugins/start/govim
就是那麼簡單!
一些好用的功能
以下將介紹 govim 好用的功能,分別為:
- Hover information
- Code completion
- Quickfix diagnostics
其他好用的功能, govim 的 Github 都有介紹,如果想多瞭解,可以直接點傳送門。
Hover information
此功能可以顯示指定函數的相關資訊。GitHub 是寫,只要將滑鼠移到指定函數上,即可顯示。但在我的環境下,無法成功試出此功能(可能是少開啟 Vim 的某些功能,在此並沒有深究)。雖然沒辦法用滑鼠達成,但其實可以透過設定快捷鍵來達到同樣的效果,對於原本也是想用鍵盤搞定全世界的人,這也是不錯的方法。我的設定方式如下:
~/.vimrc
...
# nmap: 在 Normal 模式下可用
# silent: 執行後,不會在畫面下方留下痕跡
# leader: vim 快捷鍵中的 namespace,一般預設為'\'
nmap <silent> <leader>s : <C-u> call GOVIMHover()<CR>
...
透過以上的設定,在 Normal 模式下,就可以鍵入
除了會有候選函式的清單,上方還會有 [Scratch] [Preview] 介紹函式的相關資訊。\ 再加上 s 開啟函數說明(結果如下圖)。Code completion
此功能可以幫忙補齊未打完的程式碼,或者用來提示可以使用的相關函數或變數。要啟動此功能,也需要做一些額外的設定:
~/.vimrc
...
filetype plugin on
set omnifunc=syntaxcomplete#Complete
...



留言
張貼留言