概述
最近疫情封鎖在家無事,匯總整理下自己使用的neovim插件,以及這些插件都具備哪些功能:
功能 | 插件 |
---|---|
1. 代碼視圖:文件和目錄樹,標簽視圖,狀態欄 | vim-airline-themes,vim-airline,nerdtree,taglist.vim,tagbar, |
1.1 代碼視圖/語法高亮: | sheerun/vim-polyglot, kanagawa ,vim-colorschemes |
1.2 代碼視圖/代碼顯示: | Yggdroot/indentLine(對齊線),luochen1990/rainbow(嵌套括號高亮) |
1.3 代碼高亮:高亮多個關鍵詞 | inkarkat/vim-mark |
2. 代碼跳轉: | |
2.1 代碼跳轉/基於標簽跳轉: | jsfaint/gen_tags.vim, |
2.2 代碼跳轉/跨文件跳轉:歷史文件,子目錄文件 | yegappan/mru,junegunn/fzf,junegunn/fzf.vim |
2.3 代碼跳轉/頁面內跳轉:行間、列間 | easymotion/vim-easymotion |
2.4 代碼跳轉/窗口跳轉: | nvim內置,tmux內置 |
3. 代碼閱讀:(代碼定義,代碼引用等) | neovim/nvim-lspconfig,jsfaint/gen_tags.vim |
3.1 代碼編輯/自動補全: | 內置補全功能,neovim/nvim-lspconfig |
3.2 代碼編輯/語法檢查: | neovim/nvim-lspconfig |
3.3 代碼編輯/代碼片段: | hrsh7th/nvim-cmp,L3MON4D3/LuaSnip,rafamadriz/friendly-snippets |
3.4 代碼編輯/代碼搜索: | rking/ag.vim |
插件介紹
Nerdtree
概述
【左邊欄顯示目錄結構】
技巧
- 切換根目錄:返回上級
u
;當前目錄作為根目錄C
- 更新顯示:
r
- 重命名文件:
mm
- 顯示隱藏文件:
I
- 顯示當前打開文件的位置:
:NERDTreeFind
( 可以自定義快捷鍵 ) - 開啟和關閉窗口:
NERDTreeToggle
vim-airline
概述
【頂欄部分顯示已打開的文件,可以進行切換】
配置
羅列部分airline配置
" 設置切換tab的快捷鍵 <\> + <i> 切換到第i個 tab
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9
tagbar
概述
tagbar是一個taglist的替代品,比taglist更適合c++使用,函數能夠按類區分,支持按類折疊顯示等,顯示結果清晰簡潔。
【右邊欄顯示文中的tag】
mru、fzf
概述
插件組合后可以實現文件間的選擇和跳轉:
- 打開並搜索最近的的文件
- 搜索當前目錄的文件
- 過濾文件行中內容
fzf在bash中的使用,最常用的就是獲取歷史輸入命令:ctrl + r
--> 輸入字符進行搜索匹配 --> ctrl + j/k
進行上下切換 --> Enter
選中
配置
cd ~/.config/nvim/plugged/fzf
./install
全過程Y
上面方式配置完成后,在bash中也能使用
vim-easymotion
概述
可以在當前文件中快速跳轉,行間跳轉和單詞間跳轉。
- 默認的快捷鍵:行間跳轉
<leader><leader>+j/k
; 單詞間跳轉<leader><leader>+w
- 輸入上面按鍵后每行或每個單詞會出現個索引符號,直接按對應的按鍵即可跳轉到對應位置
gen_tags.vim
概述
該插件可以自動生成tags,使用gtags替代cscope了,可以查看代碼的定義和應用。該組件特點
- 支持的語言多:該組件配置插件支持分析的語言達154多種
- 屬於靜態分析,可能存在多種引用關系,后面的nvim-lspconfig是動態分析,需要編譯生成引用關系,會更智能
配置
安裝gtags(gun global)軟件
進入~/.config/nvim/gtags/執行install
安裝位置:~/bin/gtags,~/.bashrc 和 ~/.config/nvim/init.vim
參考
vim中使用gtags - whilewell - 博客園 (cnblogs.com)
nvim-marks
概述
可以高亮多個單詞,方便閱讀代碼
nvim-lspconfig
概述
lspconfig將neovim內置的lsp api進行封裝(這里指的是lsp client,lsp server需要單獨安裝),從而可以通過簡單的配置即可使用lsp。需要使用該功能還涉及很多其它的組件,這里就不贅述了。
lspconfig支持哪些功能:
- go-to-definition
- find-references
- hover
- completion:auto-completion和 snippets support,需要額外插件
- rename
- format:未研究
- refactor:未研究
功能演示
查看定義,引用,幫助
代碼片段
代碼片段基於friendly-snippets
插件實現,有需要可以進行自定義
- 輸入特定字符串,會匹配到自動補全中的
snippet
類型 - 然后
<C-p/n>
進行上下選擇,或者進行模糊匹配輸入選擇 - 選中后
<CR>
即回車鍵 - 然后在片段中按
<tab>
鍵, 實現不同位置內容的編輯
自動補全
nvim內置補全功能

LSP實現補全功能
代碼的補全是基於nvim-lspconfig
和 不同語言的lsp server實現的。
當前軟件內部開啟的有: clangd:C / pyright:Python / lua-language-server:lua
,前面是lsp server后面是對應的語言,當打開c, pyhton和lua后就會自動在項目根目錄(.git)打開lsp server。可以通過:LspInfo
查看配置和運行狀態
代碼補全演示
代碼診斷
python文件診斷功能
1. 通過']e'和'[e'實現診斷內容的上下跳轉
2. 通過'<space> + jq' 獲取所有diagnosetics的列表
3. 通過'<space> + jf' 打開diagnosetics內容
c文件診斷功能:增加錯誤的語法
重命名
下面演示了通過lsp將add_checksum替換成add_wsk,中間通過ag.vim和ag分別進行了搜索匹配,可以看到替換的過程非常的快捷
配置
pyhton語言
sudo npm i -g pyright
c語言
- 安裝bear,用來生成clangd依賴的配置文件'compile_commands.json'
sudo apt-get install bear
bear 后面跟編譯命令即可
bear $make
- 安裝clangd,直接使用二進制即可,自制的軟件包中已經包含
參考
Home · neovim/nvim-lspconfig Wiki · GitHub | lsp wiki
nvim-autopairs
概述
自動補齊括號,是通過lua重寫后的autopairs。會自動補齊括號
參考
Vim括號/引號自動補齊插件auto-pairs的安裝和使用方法 | vim教程網 (vimjc.com)
vim-translator
概述
翻譯軟件,默認中文翻譯
- 默認翻譯引擎:['bing', 'haici', 'youdao']
- 翻譯快捷鍵:
<leader> + w
kanagawa
概述
vim 顏色主題,顯示效果很不錯
配置
針對tmux下colorscheme失效的問題需要如下配置:
~/.bashrc 中配置
alias tmux="TERM=screen-256color-bce tmux"
~/.tmux.conf 中配置
set -g default-terminal "xterm"
source ~/.bashrc
后重啟tmux
即可生效
軟件安裝
環境要求:Ubuntu 18.04 server版本
1.軟件包下載路徑
mkdir -p ~/.config/
git clone https://gitee.com/whilewell/nvim.git ~/.config/nvim
注:部分軟件已經內置到bin
目錄下,內置的軟件有:
- clangd
- node
- nvim
- lua-language-server
2.安裝依賴軟件
安裝 clangd 依賴(clangd是c代碼的lsp).
sudo apt-get install bear
1. 生成方法
bear $build_cmd
2. nvim在'compile_commands.json'對應的目錄下打開文件,
安裝gen_tags依賴
# 1. 會將global默然安裝到~/bin/gtags; 安裝pyhton的語法解析包pygments
# 2. 並配置環境變量到~/.bashrc 和 ~/.config/nvim/init.vim
cd ~/.config/nvim/gtags
./install
安裝lsp依賴: 不同的語言需要安裝不同的lsp server
npm i -g pyright
安裝fzf
cd ~/.config/nvim/plugged/fzf
./install
全過程Y
3.配置后的.bashrc
# 配置后的.bashrc
export PYTHONDONTWRITEBYTECODE=1
export PATH=~/.config/nvim/bin:$PATH
export GTAGSCONF=/home/wsk/bin/gtags/data/gtags/gtags.conf
export GTAGSLABEL=pygments
alias nv='nvim'
使用技巧
- 查看綁定的快捷鍵:
verbose imap <tab>
參考
- learn-neovim-lua/comment.lua at main · nshen/learn-neovim-lua · GitHub | neovim配置替換成了lua方式
- nvim0.5+從0單排]圖文教程、nvim配置下載
- 在 neovim 中使用 Lua_lxyoucan的博客-CSDN博客_lua neovim
- 13_[nvim0.5+從0單排]_ 自定義代碼段LuaSnip入門_嗶哩嗶哩_bilibili | 自定義代碼段
- Home · neovim/nvim-lspconfig Wiki · GitHub | lsp wiki
- Bytefluent | Vivify | vim 主題顏色在線調試