1 前言
最近看到了Neovim
以及SpaceVim
,於是上手試了一下。
2 Neovim
與SpaceVim
Neovim
是Vim
的一個分支,具有更加現代的GUI
、嵌入式以及腳本化的終端、異步工作控制等等特點,默認配置文件為~/.config/nvim/init.vim
。而SpaveVim
,是一個社區驅動的模塊化的Vim IDE
,以模塊的方式組織管理插件以及相關配置,為不同的語言開發量身定制了相關的開發模塊,提供了自動補全、語法檢查、格式化、調試等特性,默認配置文件為~/.SpaveVim.d/init.toml
。
3 使用感受
3.1 Neovim
首先是安裝,Neovim
的安裝很簡單,可以直接通過包管理器安裝:
paru -S neovim
安裝了之后可以使用nvim
命令打開。
簡單使用了一下,發現Neovim
並沒有和Vim
(版本8.2
)有太大的區別。一般情況下,這樣的Neovim
不能成為一個IDE
,需要添加若干插件才能使用。流行的插件管理器有如下幾個:
vim-plug
vundle
neobundle
Pathogen
筆者用的是vim-plug
,插件安裝不難,在init.vim
中的兩個call
之間加上插件的名字:
call plug#begin('~/.vim/plugged')
Plug 'junegunn/vim-easy-align'
call plug#end()
然后在Neovim
中鍵入:PlugInstall
即可進行安裝。
一般來說,如果需要打造成為一個IDE
,那么至少需要具備以下功能:
- 補全:可用插件YouCompleteMe、vim-snippets
- 高亮:可用插件semantic-highlight.vim
- 工程目錄樹:可用插件nerdtree
- 運行與調試:可用插件Vdebug
但是,安裝使用了之后,測試了一下Java
,效果並不怎么樣,拿最常用的補全來說,補全提示的速度比不快,另一方面,提示的速度比IDEA
慢,而且提示不夠智能,不能根據當前光標處的變量提示最接近的補全。另一方面,並不能自動import
(雖然可以通過腳本做到,但是又需要額外的配置)。
3.2 SpaceVim
SpaveVim
相當於一個開箱即用的IDE
,默認就提供了IDE
的常見功能,比如:
- 補全
- 高亮
- 工程目錄樹
- 運行調試
- 快速定位
- 構建工具支持
等等。首先,不可否認的是SpaceVim
默認就提供了一個用戶友好的界面:
會默認記錄最近打開的文件,並且可以通過數字快速定位。筆者同樣使用了Java
進行測試,雖然內置了代碼補全插件,但是,令人遺憾的是並沒有自動import
的功能,並且也沒有變量名自動補全的功能(指創建一個叫arrayList
的變量):
當然,這也有可能是沒有完全配置好的原因,想要配置一個更加好用的SpaceVim
,可以參考這篇文章。
4 建議
下面是個人建議的使用Neovim
的原因:
- 需要一個從零開始配置的
IDE
或者Vim
- 動手能力強,能解決各種問題
- 能夠熟練記憶並使用各種各樣的快捷鍵
- 熟悉各種插件,包括但不限於
nerdtree
、YouCompleteMe
等等
因為如果想把Neovim
用好,最起碼需要花點時間,利用插件安裝好各種各樣的插件之后(當然因為有些插件只是針對Vim
的,所以可能會遇上不兼容的問題),熟悉它們的使用並知道快捷鍵,這對記憶力以及學習能力都是一個考驗,在這過程中,需要無數次的打開init.vim
進行配置。
建議使用SpaveVim
的原因:
- 不想手動配置太多的插件以及快捷鍵
- 需要一個開箱即用且輕量級的
IDE
- 不需要開發很大的工程
在SpaveVim
里面,大部分都是已經配置好的,剩下的只是需要通過官網文檔熟悉界面,最主要的是熟悉Space
組合鍵的使用,比如:
Space+數字鍵
:切換窗口Space+b/B
:緩沖區操作Space+c
:命令操作Space+f
:文件操作Space+l
:語言相關操作,比如運行等等Space+w
:窗口操作
相比起Neovim
需要在init.vim
中配置各種map
去映射鍵,SpaceVim
的快捷鍵學習曲線會低了很多。
但是相比起現代級的IDE
,Neovim
與SpaceVim
還是有很大差距的,最明顯的就是對各種庫、各種包以及一鍵部署運行的支持,因此,個人認為SpaceVim
/Neovim
不是特別適合大項目的。不過當然有一些折中的方案,比如VSCode
,在各種各樣的插件加持之下,可以堪稱是又輕又快的現代IDE
。
5 資源
如果想學習Neovim
/SpaceVim
或者想把兩者配置成一個更好用的IDE
,這里提供了一些資源: