![]()
你確定要用 neovim 開發 golang?
現在是 vscode 稱霸天下的時代,理所當然的 (neo)vim 也常常被拿來 vscode 比較,vscode 內建整合了 git、debugger、自動補全引擎、terminal、extension manager,另外 Golang 在 vscode 上的 extension 支援相當良好: 包括跳轉到定義 (go to definition)、重新命名 (rename)、跳轉到型態定義 (go to type definition)⋯⋯ 一堆細節功能,近期由於 google golang team 接手 go 語言的 vscode extension,相信使用 vscode 開發是不錯的選擇。
(neo)vim 當然也能達到 vscode 的類似功能,但是必須花時間設定調教,在 vscode 問世之前我會推薦 (Neo)vim 給我的朋友,vscode 問世之後我就開始推薦 vscode。
本文給那些本來就在 (neo)vim 裡打滾的人,但對 go 語言設定不熟的人,
如果你是一張白紙,而且沒有被虐的癖好,我建議選擇 vscode,可以用較少的時間進入到寫程式的環節,而不是一直在花時間在設定,這篇文你也沒必要看下去。
預備動作
Must have
- 你應該先安裝好 neovim nightly 版本,
brew install neovim --HEAD
- 你應該要知道怎麼使用 vim-plug,至少要知道
:PlugInstall
- 你應該先把 go 語言環境安裝好
Nice to have
開發環境基本功能
一個好用的 Editor 我認為應該包含以下幾點基本功能:
- Auto completion - 好的自動補全引擎
- File manager - 可以在側邊欄看到專案的結構
- Real time linter - 在寫 code 犯錯的同時,有一些提示 (也就是 diagnostic 功能)
- Background compile - 編譯的同時不應該卡住整個 Editor,要讓使用者能做其他事情
- Code navigation: 包含跳轉到定義,跳轉到型態定義,或是當一個檔案寫得很長的時候,怎麼綜觀全局
以下我將會介紹我使用的 Plugin,達到我上述所提到的功能。
以下使用的皆是 Neovim nightly 版本,使用 stable 是沒有官方 LSP 支援的。
Note:neovim 是由 vim 所 fork 出來的,差異介紹請看這篇,某些 Plugin 不會同時相容於兩者,我接會標明。