Image

Neovim號稱是新世紀的Vim,是否真的名副其實呢? 老實講最近的IDE越來越厲害,除了開啟速度讓我不滿以外,功能的確是做了很多的優化,Vim身為編輯器之神是否將至隕落呢? Neovim是否能夠讓Vim重返榮耀,與當前一線的文字編輯器(VS Code, Atom)並駕齊驅。

Vim算是跟我在程式圈中打滾最久的夥伴了,對他總是又愛又恨,一開始覺得操作這麼卡的編輯器怎麼會有人用,到最後慢慢的習慣養成後發現像是中毒似的,戒不掉。雖然Vim操作犀利,但是跟很多現代化IDE相比他還是有些略顯不足,最明顯的可能他對於中文輸入法真的太不友善了,時常需要在mode轉換間不斷地切換輸入法。再來就是需要不斷的在Treminal以及Vim之間切換,但是這個在看過網路上一個使用Vim+tmux的操作後已經得到了不少改善。

很多人可能會覺得,Vim就是在純文字的環境下才會使用到,因此即使他有一些缺陷我可能也不會特別的去在意,反正習慣成自然。Neovim出來好一陣子了,心血來潮嘗試了一下,發現他將那些Vim隱藏起來的小痛處一一解決了,下面就來述說一下我使用上感受到的優點。

  1. Async的實作: 相信有在玩Vim的都知道,Vim使用Bundle來安裝大型的套件的時候程序是整個卡死的,無法知道到底程式是不是還在運行或者是當掉了,不過Neovim解決了這個問題,可以異步執行更多樣化的工作,而不導致程式Block住。這個功能在Vim 8也有得到實作,因此是一個蠻重要的進步。

  2. 對Python的支援: 這個東西真的讓我頭大很久,以往Vim要支援Python插件就必須要重新編譯過,導致我必須先移除使用套間管理安裝的Vim,再自己重新編譯安裝,而當Python版本被更新後,我的Vim又必須要重新編譯一次了,這個問題讓人十分火大。現在Neovim降低了vim與python之間的耦合關係,要讓Neovim支援Python,僅需要在系統的Python使用pip安裝neovim套件即可,真的是方便很多。

  3. 內嵌的Terminal: 這個功能的實作我相信是很多人十分期待的,我們可以直接在Neovim內部切割出一個視窗給Shell操作,編譯跟編輯現在可以相互對照,而不用使用Tmux來達成這個目的了,當然了會有這個功能出現,也歸功於Async的實作。 Terminal

  4. 設定檔的位置: Neovim遵守XDG標準,,將設定檔放置在~/.config/nvim中,而初始的.vimrc在nvim中則為~/.config/nvim/init.vim,如此一來我們可以很方便的用git來管理設定檔的。相較於以前在家目錄底下進行設定,這種方式真的給我們很大的便利性。

  5. 預設的設定檔: 一般來說vim在剛安裝好時,沒有經過任何設定應該不會有任何一個人想要使用它,因為他有太多太多的不方便,必須經過一些微量的調整後才可以正常使用,有些功能10個使用者中有11個人會想要開啟他,但是vim預設卻是關閉的,這點很惱人,表示說我必須先學會寫一些設定檔我才能開始使用,但是Neovim將這些設定預設打開,這個直接促使我原本的vimrc足足少了10多行。詳細是那些預設功能可以參考nvim-defaults

  6. 擴充性: Vim的擴充性應該不用多說了,從他的腳本量就知道他非同小可,但是Neovim又再次把它提升到了一個境界,Neovim實作出的RPC API,可以讓許多程式以Neovim為核心去做更多事情,例如我現在常用的VS Code也可以在後端以neovim來支援ex指令,更是有許多以neovim實作出來的GUI版本,功能也都十分強大。

Neovim核心是不包含GUI的,因此僅能在terminal下執行,如果有需要使用GUI可以使用其他延伸作品 Related-projects

以上是我使用起來感受差異最大的幾個關鍵點,輸入法的問題目前也還沒有找到最合適的解法,但是有這麼一個全新高度的作品,相信已經有足夠多的理由讓我們來嘗試看看了。