Neovim插件推薦&配置

1 前言
本文所用配置以LunarVim的Nightly版本為基礎(chǔ)。 Neovim版本: 0.9.0 插件管理器:lazy.nvim
你可以在LunarVim中,使用<leader>Lc
打開(kāi)~/.config/lvim/config.lua
,將以下插件配置復(fù)制或替換到合適的位置config.lua
中,然后重啟lvim自動(dòng)安裝插件。
本文的配置將合理使用lazy.nvim的懶加載功能,只在需要的時(shí)候加載需要的插件,加快neovim的運(yùn)行和加載速度,減少資源占用。
適合閱讀本文的人群:有一定的neovim配置經(jīng)驗(yàn)
1.1 完整配置文件
你可以在 https://github.com/ADkun/my-lvim-config/blob/main/config.lua 這個(gè)網(wǎng)址看到我最新的config.lua完整配置文件。
1.2 【本文更好的閱讀方式】(強(qiáng)烈推薦)
由于B站的編輯器格式化功能很差,本文原文采用markdown格式編寫(xiě),請(qǐng)移步下面鏈接查看,獲得更好的體驗(yàn)。
請(qǐng)?jiān)L問(wèn) https://github.com/ADkun/lvim-config-suggest/blob/main/README.md 以更好的格式化方式查看本文,有任何錯(cuò)誤也會(huì)在這個(gè)文檔里更新
2 插件
2.0 預(yù)配置
這些配置是為了在config.lua中提前聲明一些變量,避免冗長(zhǎng)的寫(xiě)法,你可以將這些配置提前寫(xiě)在config.lua的前部。
2.1 filetype.nvim
推薦度:★★
主頁(yè):https://github.com/nathom/filetype.nvim?
簡(jiǎn)介:
filetype.nvim對(duì)neovim的filetype進(jìn)行了優(yōu)化,可以使打開(kāi)文件時(shí)識(shí)別文件類型的速度更快。
在某些情況下,還可以修復(fù)由文件類型識(shí)別不正確導(dǎo)致的高亮不全問(wèn)題。(如打開(kāi)
.h
文件發(fā)現(xiàn)沒(méi)有代碼高亮)
使用方式:在config.lua中配置好,然后打開(kāi)文件。
配置:
上面配置中的extensions
表示將.h
后綴的文件識(shí)別為cpp
文件類型,使.h
文件被neovim識(shí)別為cpp文件,使用cpp文件的高亮。 除了extensions
以外,你還可以配置
literal
:匹配全文件名complex
:使用正則表達(dá)式匹配路徑和文件名function_extensions
:對(duì)指定類型的文件設(shè)置回調(diào)函數(shù)function_literal
:對(duì)指定全文件名的文件設(shè)置回調(diào)函數(shù)function_complex
:對(duì)指定正則表達(dá)式匹配的文件設(shè)置回調(diào)函數(shù)shebang
:對(duì)于包含了指定shebang的文件視為指定的文件類型,如#! /usr/bin/dash
視為sh文件類型,以匹配不同類型的shell腳本文件。 具體配置方法見(jiàn)插件Github主頁(yè),里面有給出example。
2.2 trouble.nvim
推薦度:★★★
主頁(yè):https://github.com/folke/trouble.nvim?
簡(jiǎn)介:
trouble.nvim實(shí)現(xiàn)了trouble這種預(yù)覽窗口類型(類似于quickfix, loclist),這種窗口的特點(diǎn)是切換項(xiàng)目時(shí)會(huì)將打開(kāi)前的窗口實(shí)時(shí)預(yù)覽到對(duì)應(yīng)的位置上,退出trouble窗口時(shí)會(huì)回到原來(lái)的位置。
trouble.nvim可以讓你快速查看你的工作區(qū)、文件中的LSP警告列表。
使用方式:熱鍵打開(kāi)窗口
配置:
鍵位配置(which-key):
插件只會(huì)在你使用快捷鍵的時(shí)候才加載。 注:which-key的配置方式需要你以<leader>
鍵開(kāi)頭,比如上面配置的keymap["tt"]
,你需要按<leader>tt
。?LunarVim的默認(rèn)<leader>
鍵是空格
2.3 leap.nvim
推薦度:★★★★★
主頁(yè):https://github.com/ggandor/leap.nvim?
簡(jiǎn)介:
leap.nvim可以讓你的光標(biāo)快速在可視范圍內(nèi)跳轉(zhuǎn)。
你只需要按下引導(dǎo)鍵(自定義的第一個(gè)鍵),然后輸入你想跳轉(zhuǎn)到的地方的相鄰2個(gè)字符,如有重復(fù),輸入最后一個(gè)提示字符即可。
可以配合其它neovim快捷鍵一起使用,如"c", "d", "y"
使用方式:見(jiàn)下面的快捷鍵介紹,也可以配合"c", "d", "y"等neovim原本的功能鍵一起使用。
配置:
快捷鍵介紹:
r
:在當(dāng)前光標(biāo)往右往下查找。R
:在當(dāng)前光標(biāo)往左往上查找。W
:多窗口情況下,可快速跳轉(zhuǎn)到其它窗口的內(nèi)容。
2.4 flit.nvim
推薦度:★★★★★
主頁(yè):https://github.com/ggandor/flit.nvim?
簡(jiǎn)介:
flit.nvim是leap.nvim同一個(gè)作者產(chǎn)出的,flit.nvim需要依賴于leap.nvim。
flit.nvim可以增強(qiáng)neovim的"f", "F", "t", "T"這幾個(gè)鍵的功能,同樣是一個(gè)光標(biāo)跳轉(zhuǎn)插件。
使用方式:按"f", "F", "t", "T",然后鍵入你想去的目標(biāo)字符。如果本次沒(méi)有到達(dá)你想去的目標(biāo),再次按下"f"或"t",光標(biāo)會(huì)跳到下一個(gè)目標(biāo)。
配置:
2.5 hop.nvim
推薦度:★★★★
主頁(yè):https://github.com/phaazon/hop.nvim?
簡(jiǎn)介:
hop.nvim與leap.nvim一樣,同樣是一款可視范圍內(nèi)光標(biāo)跳轉(zhuǎn)的插件。
與leap.nvim不同,這款插件有更多功能,并且支持單字符的跳轉(zhuǎn)。
使用方式:以本配置為例,按"E",然后鍵入可視范圍內(nèi)你想去的那個(gè)字符,最后輸入1-2個(gè)提示字符就可以跳到目標(biāo)位置了。 注:配置中以注釋的方式將其它一些函數(shù)屏蔽掉了,僅保留單字符跳轉(zhuǎn)功能,作為leap.nvim的補(bǔ)充。如有需要可去掉注釋符自行配置。
配置:
2.6 nvim-ts-rainbow2
推薦度:★★★★
主頁(yè):https://github.com/HiPhish/nvim-ts-rainbow2 簡(jiǎn)介:
nvim-ts-rainbow2基于nvim-treesitter,將配對(duì)的括號(hào)進(jìn)行彩色的標(biāo)注,方便辨認(rèn)。 使用方式:配置即用
配置:
然后在config.lua另外一個(gè)地方加上這一行(非插件的config函數(shù)里)
2.7 nvim-treesitter-context
推薦度:★★★
主頁(yè):https://github.com/nvim-treesitter/nvim-treesitter-context?
簡(jiǎn)介:
nvim-treesitter-context是一款基于nvim-treesitter的上文文固定插件。
它可以將當(dāng)前函數(shù)的函數(shù)頭固定在neovim界面的前幾行,讓你知道當(dāng)前在編輯的是什么類、函數(shù)或方法。 使用方式:配置即用
配置:
2.8 harpoon
推薦度:★★★
主頁(yè):https://github.com/ThePrimeagen/harpoon?
簡(jiǎn)介:當(dāng)前項(xiàng)目的文件收藏夾?
使用方式:快捷鍵使用
<leader>ohh
:在Telescope中打開(kāi)Harpoon收藏的文件<leader>oht
:打開(kāi)Harpoon本身自帶的收藏夾<leader>ohf
:將當(dāng)前文件加入到收藏夾<leader>ohd
:將當(dāng)前文件從收藏夾中刪除<leader>ohn
:切換到下一個(gè)收藏夾文件<leader>ohp
:切換到上一個(gè)收藏夾文件
配置:
快捷鍵配置:
2.9 nvim-ts-context-commentstring
推薦度:★★★★
主頁(yè):https://github.com/JoosepAlviste/nvim-ts-context-commentstring?
簡(jiǎn)介:
本插件基于nvim-treesitter,根據(jù)當(dāng)前光標(biāo)在文中的位置,配合Comment.nvim,自動(dòng)選擇合適的注釋格式。
使用方式:配置即用。
配置:
2.10 goto-preview
推薦度:★★★★
主頁(yè):https://github.com/rmagatti/goto-preview?
簡(jiǎn)介:本插件可以以浮動(dòng)窗口的形式預(yù)覽符號(hào)的定義、實(shí)現(xiàn)等信息。?
使用方式:光標(biāo)定位到目標(biāo)符號(hào),快捷鍵使用
gpd
:預(yù)覽符號(hào)定義gpi
:預(yù)覽符號(hào)實(shí)現(xiàn)gpr
:預(yù)覽符號(hào)引用gpt
:預(yù)覽類型定義
配置:
2.11 nvim-lastplace
推薦度:★★★★★
主頁(yè):https://github.com/ethanholz/nvim-lastplace?
簡(jiǎn)介:自動(dòng)記憶當(dāng)前文件位置,在下次打開(kāi)時(shí)定位到上次位置。?
使用方式:配置即用
配置:
2.12 todo-comments.nvim
推薦度:★★★
主頁(yè):https://github.com/folke/todo-comments.nvim?
簡(jiǎn)介:高亮注釋中的關(guān)鍵詞,按需安裝。?
使用方式:在注釋中以以下關(guān)鍵詞,并加上英文冒號(hào),然后輸入注釋內(nèi)容。
HACK
NOTE
TODO
WARN
WARNING
BUG
FIX
PREF
配置:
2.13 nvim-surround
推薦度:★★★★★
主頁(yè):https://github.com/kylechui/nvim-surround?
簡(jiǎn)介:使用快捷鍵配合textobjects快速地添加/修改/刪除各種包括符,如()、[]、{}、<>等。?
使用方式:快捷鍵使用,下面舉幾個(gè)例子:
ysiw"
:將當(dāng)前光標(biāo)選中的單詞用雙引號(hào)包圍,其中,ys
是本插件的觸發(fā)快捷鍵,iw
是inner word的意思,這是neovim自帶的一種textobject選中方式。ds)
:將當(dāng)前光標(biāo)位置相鄰的最內(nèi)層的小括號(hào)刪除。cs)}
:將當(dāng)前光標(biāo)位置相鄰的最內(nèi)層的小括號(hào)替換為大括號(hào)。
配置:
2.14 nvim-spectre
推薦度:★★★★
主頁(yè):https://github.com/nvim-pack/nvim-spectre?
簡(jiǎn)介:搜索并替換項(xiàng)目中所有文件/當(dāng)前文件/當(dāng)前選中區(qū)域的內(nèi)容?
使用方式:快捷鍵使用
在文件窗口中
<leader>osf
:在當(dāng)前文件搜索<leader>oss
:在當(dāng)前目錄(項(xiàng)目)中搜索,包括子文件夾<leader>osv
:在當(dāng)前選中區(qū)域搜索<leader>osw
:在當(dāng)前選中區(qū)域搜索單詞
在Spectre窗口中
<leader>R
:替換所有<leader>rc
:替換當(dāng)前光標(biāo)所在行的匹配項(xiàng)<cr>
:跳到該匹配項(xiàng)的原文件位置<leader>q
:將所有匹配項(xiàng)發(fā)送到quickfix中?
:查看所有按鍵
注:在Spectre窗口中是無(wú)法使用<leader>q
來(lái)退出窗口的,因?yàn)橛锌旖萱I沖突。需要用<C-w>c
來(lái)退出。
配置:
快捷鍵配置:
2.15 nvim-bqf
推薦度:★★★★
主頁(yè):https://github.com/kevinhwang91/nvim-bqf?
簡(jiǎn)介:增強(qiáng)你的quickfix窗口?
使用方式:配置即可顯示增強(qiáng)的quickfix窗口,然后在quickfix窗口內(nèi)使用對(duì)應(yīng)快捷鍵操作quickfix
z,
:將預(yù)覽窗口的切換為全屏/半屏o
:將當(dāng)前quickfix條目以drop的方式(如果緩沖區(qū)沒(méi)有就打開(kāi)新緩沖區(qū),如果有就切換到那個(gè)緩沖)更多快捷鍵請(qǐng)查看配置以及參考Github主頁(yè)
配置(并不完美,有興趣的可以自行修改):
2.16 vim-matchup
推薦度:★★★
主頁(yè):https://github.com/andymass/vim-matchup?
簡(jiǎn)介:在你光標(biāo)位置將if..else if..else等語(yǔ)言內(nèi)的對(duì)應(yīng)標(biāo)簽高亮。擴(kuò)展你的%
鍵能力。?
使用方式:配置即用,在if等可以配對(duì)的標(biāo)簽處點(diǎn)擊%
跳到下一個(gè)匹配處
配置:
2.17 persistence.nvim
推薦度:★★★★★
主頁(yè):https://github.com/folke/persistence.nvim?
簡(jiǎn)介:自動(dòng)保存你的session到文件中,在下次打開(kāi)相同目錄/項(xiàng)目時(shí),你可以手動(dòng)加載session恢復(fù)之前的工作狀態(tài)。?
使用方式:退出即自動(dòng)保存,打開(kāi)后使用<leader>a
來(lái)加載session
配置:
快捷鍵配置:
2.18 better-escape.nvim
推薦度:★★★★★
主頁(yè):https://github.com/max397574/better-escape.nvim?
簡(jiǎn)介:可以自定義任意2個(gè)按鍵來(lái)退出Insert模式。?
使用方式:在Insert模式下,在200ms(可修改)內(nèi)連續(xù)按下"jk"或"jl"(可修改)退出Insert模式。
注:如果電腦比較卡,200ms可能不夠,可以修改為更長(zhǎng)一些的時(shí)間。
配置:
2.19 tabout.nvim
推薦度:★★★
主頁(yè):https://github.com/abecodes/tabout.nvim
簡(jiǎn)介:可以在Insert模式下,按<Tab>
跳出括號(hào)。?
使用方式:在Insert模式下,如果你的光標(biāo)在括號(hào)或引號(hào)里面(可配置),按<Tab>
鍵跳出括號(hào) 注:實(shí)際使用時(shí),因?yàn)閮?yōu)先級(jí)比nvim-cmp低,所以在彈出補(bǔ)全窗口時(shí),需要按<C-e>
關(guān)閉補(bǔ)全窗口才能使用,所以體驗(yàn)并不是特別好。
配置:
2.20 smartyank.nvim
推薦度:★★
主頁(yè):https://github.com/ibhagwan/smartyank.nvim?
簡(jiǎn)介:在"dd"等不希望將內(nèi)容復(fù)制到系統(tǒng)剪貼板的時(shí)候不復(fù)制到系統(tǒng)剪貼板。支持在SSH等情況復(fù)制到系統(tǒng)剪貼板。?
使用方式:配置即用。 注:可能是因?yàn)閭€(gè)人環(huán)境問(wèn)題,沒(méi)有實(shí)際體驗(yàn)到它的功能,但對(duì)性能沒(méi)啥影響,還是裝上吧。
配置:
2.21 marks.nvim
推薦度:★★★★★
主頁(yè):https://github.com/chentoast/marks.nvim?
簡(jiǎn)介:在左側(cè)欄中顯示這一行標(biāo)記的marks,可以顯示當(dāng)前文件/所有緩沖區(qū)的所有marks/所有緩沖區(qū)的大寫(xiě)marks?
使用方式:
mx
:neovim原本的mark方式進(jìn)行標(biāo)記,x為標(biāo)記名。m;
:自動(dòng)對(duì)當(dāng)前行按字母順序進(jìn)行小寫(xiě)標(biāo)記dmx
:x為標(biāo)記名,刪除某個(gè)標(biāo)記名mX
:X為大寫(xiě)標(biāo)記名,大寫(xiě)的標(biāo)記可以跨文件跳轉(zhuǎn)。<leader>oma
:顯示所有標(biāo)記(包括小寫(xiě)大寫(xiě),在所有緩沖區(qū)中)<leader>omb
:顯示當(dāng)前buffer中的所有標(biāo)記(包括小寫(xiě)大寫(xiě))<leader>omg
:顯示所有大寫(xiě)標(biāo)記
配置:
快捷鍵配置:
2.22 neodim
推薦度:★★★★★
主頁(yè):https://github.com/zbirenbaum/neodim?
簡(jiǎn)介:將沒(méi)有使用到的變量進(jìn)行暗淡處理。?
使用方式:配置即用
配置:
2.23 windows.nvim
推薦度:★★★★★
主頁(yè):https://github.com/anuvyklack/windows.nvim?
簡(jiǎn)介:通過(guò)幾個(gè)函數(shù)可以將當(dāng)前neovim窗口進(jìn)行全屏/垂直全屏/水平全屏/等分?
使用方式:快捷鍵使用
配置:
快捷鍵配置:
2.24 nvim-notify
推薦度:★★★★★
主頁(yè):https://github.com/rcarriga/nvim-notify?
簡(jiǎn)介:將各種提示顯示為彈窗?
使用方式:配置即用
<leader>onm
:顯示messages(非noice功能)
注:只使用nvim-notify的話,只能將vim.notify重定向輸出到notify窗口中,需要將所有消息重定向到notify的話,需要裝noice.nvim 注2:為了性能,配置中將動(dòng)畫(huà)效果取消了,需要的可以自行開(kāi)啟(修改stages
項(xiàng))
配置:
2.25 noice.nvim
推薦度:★★★★★
主頁(yè):https://github.com/folke/noice.nvim?
簡(jiǎn)介:一個(gè)覆寫(xiě)了很多neovim原本UI的插件,很大幅度地提升了美觀性。
將messages重定向到notify
將搜索、命令顯示為獨(dú)立的命令框,并去除最底部的顯示欄,節(jié)省空間。
顯示過(guò)往Notifications
Telescope整合
使用方式:配置即用,快捷鍵呼出歷史窗口等功能。
<leader>onn
:顯示Notifications歷史<leader>ont
:在Telescope中顯示Notifications歷史<leader>ond
:臨時(shí)禁用Noice<leader>one
:?jiǎn)⒂肗oice
配置:
快捷鍵配置:
2.26 nvim-ufo
推薦度:★★★
主頁(yè):https://github.com/kevinhwang91/nvim-ufo?
簡(jiǎn)介:?jiǎn)⒂胣eovim的折疊功能,在左側(cè)欄顯示可折疊的項(xiàng)目,并能夠自定義折疊顯示的內(nèi)容?
使用方式:快捷鍵使用
zm
:折疊整個(gè)文件的所有內(nèi)容zM
:同上zr
:展開(kāi)整個(gè)文件的所有內(nèi)容zR
:同上zo
或l
:展開(kāi)當(dāng)前光標(biāo)所在行的1層折疊zO
:展開(kāi)當(dāng)前光標(biāo)所在行的所有折疊zc
:當(dāng)前光標(biāo)所在行進(jìn)行折疊<leader>oud
:禁用Ufo<leader>oue
:?jiǎn)⒂肬fo
注:配置中使用了lazy=true
,意味著并不會(huì)在文件加載時(shí)加載本插件,你需要手動(dòng)輸入一次zm
或zr
以加載本插件。 注2:在多窗口的狀態(tài)下,可能會(huì)有一些BUG,如保存時(shí)自動(dòng)把另外窗口全部折疊了,這時(shí)候可以臨時(shí)關(guān)閉UFO(<leader>oud
)。
2.27 nvim-window-picker
推薦度:★★★★
主頁(yè):https://github.com/s1n7ax/nvim-window-picker?
簡(jiǎn)介:在打開(kāi)的多個(gè)窗口快速跳轉(zhuǎn)、交換。?
使用方式:
鍵入
,w
,然后鍵入1個(gè)小寫(xiě)字母鍵選擇窗口,跳轉(zhuǎn)到對(duì)應(yīng)窗口。鍵入
,W
,然后鍵入1個(gè)小寫(xiě)字母鍵選擇窗口,將當(dāng)前焦點(diǎn)窗口與對(duì)應(yīng)窗口交換。
配置:
2.28 symbols-outline.nvim
推薦度:★★★★★
主頁(yè):https://github.com/simrat39/symbols-outline.nvim?
簡(jiǎn)介:以右側(cè)欄形式顯示當(dāng)前文件的大綱、標(biāo)題、符號(hào)?
使用方式:快捷鍵打開(kāi)側(cè)欄
<leader>oo
:打開(kāi)symbols-outline側(cè)邊欄 在側(cè)欄的快捷鍵:<cr>
:回車定位到符號(hào)位置,并焦點(diǎn)到目標(biāo)窗口。o
:定位到符號(hào)位置,但焦點(diǎn)保留在symbols-outline窗口。<C-space>
:顯示對(duì)應(yīng)符號(hào)的hover窗口K
:打開(kāi)當(dāng)前符號(hào)的預(yù)覽窗口。r
:重命名當(dāng)前符號(hào)a
:代碼actionh
:當(dāng)前光標(biāo)處折疊l
:當(dāng)前光標(biāo)處展開(kāi)P
:折疊所有U
:展開(kāi)所有折疊Q
:重置折疊
注:需要LSP支持
配置:
2.29 colorful-winsep.nvim
推薦度:★★★★
主頁(yè):https://github.com/nvim-zh/colorful-winsep.nvim?
簡(jiǎn)介:打開(kāi)多窗口時(shí),在當(dāng)前焦點(diǎn)窗口周圍顯示紫色的邊框?
使用方式:配置即用
配置:
2.30 nvim-gomove
推薦度:★★★★
主頁(yè):https://github.com/booperlv/nvim-gomove?
簡(jiǎn)介:通過(guò)快捷鍵將當(dāng)前選中區(qū)域/當(dāng)前行進(jìn)行移動(dòng),并遵循縮進(jìn)?
使用方式:
Normal模式:
<M-h/l>
:向左/右移動(dòng)當(dāng)前光標(biāo)處的字符<M-j/k
:將當(dāng)前行向下/上移動(dòng),遵循縮進(jìn)
Visual模式:
<M-j/k/h/l>
:將當(dāng)前選中區(qū)域向下/上/左/右移動(dòng),遵循縮進(jìn)
配置:
2.31 search-replace.nvim
推薦度:★★★★★
主頁(yè):https://github.com/roobert/search-replace.nvim?
簡(jiǎn)介:受夠了手動(dòng)輸入:%s/xxx/ccc/gcI
嗎?這款插件可以使用快捷鍵一鍵幫你輸入這些內(nèi)容。 這款插件是spectre插件的補(bǔ)充,你可以用這款插件或者spectre插件來(lái)達(dá)到全局文件替換的效果。?
使用方式:快捷鍵使用
當(dāng)前緩沖區(qū):
<leader>rs
:打開(kāi)選擇列表(個(gè)人不會(huì)用)<leader>ro
:打開(kāi)Cmdline,自動(dòng)幫你鍵入好了:%s//gcI
<leader>rw
:打開(kāi)Cmdline,自動(dòng)幫你鍵入好了當(dāng)前光標(biāo)所在的word<leader>rW
:打開(kāi)Cmdline,自動(dòng)幫你鍵入好了當(dāng)前光標(biāo)所在WORD<leader>re
:...<leader>rf
:...
所有打開(kāi)的緩沖區(qū):同上,但是前綴是
<leader>rb
,只要多加一個(gè)b
鍵即可 具體快捷鍵見(jiàn)下面的“快捷鍵配置”
配置:
快捷鍵配置:
2.32 trailblazer.nvim
推薦度:★★★★
主頁(yè):https://github.com/LeonHeidelbach/trailblazer.nvim?
簡(jiǎn)介:一款很強(qiáng)大的臨時(shí)軌跡標(biāo)記插件,它可以使用快捷鍵保存你當(dāng)前的位置,然后安心地把光標(biāo)移到其它地方,之后再按快捷鍵按順序跳回原來(lái)記錄的位置。?
使用方式:快捷鍵使用。
<A-s>
:在當(dāng)前行保存軌跡坐標(biāo)<A-d>
:回到上一個(gè)保存的軌跡坐標(biāo),并刪除該坐標(biāo)<A-o>
:用quickfix打開(kāi)所有軌跡坐標(biāo)的列表<A-L>
:刪除所有軌跡坐標(biāo)<A-p>
:在上一個(gè)保存的軌跡坐標(biāo)處粘貼<A-P>
:在所有保存的軌跡坐標(biāo)處粘貼 更多快捷鍵見(jiàn)配置,以及Github文檔。
配置:
2.33 nvim-recorder
推薦度:★★★★★
主頁(yè):https://github.com/chrisgrieser/nvim-recorder?
簡(jiǎn)介:大幅簡(jiǎn)化和增強(qiáng)neovim自身的宏功能。允許你編輯、復(fù)制宏的內(nèi)容以及設(shè)置斷點(diǎn)?
使用方法:快捷鍵使用
q
:開(kāi)始/結(jié)束錄制宏Q
:執(zhí)行當(dāng)前選擇的宏<A-q>
:切換宏槽位cq
:編輯當(dāng)前槽位的宏yq
:復(fù)制當(dāng)前槽位的宏
注:本配置僅使用了"u", "i", "o"三個(gè)槽位,如果需要更多槽位可以自行配置slot
項(xiàng)。
配置:
2.34 nvim-various-textobjs
推薦度:★★★★
主頁(yè):https://github.com/chrisgrieser/nvim-various-textobjs?
簡(jiǎn)介:為neovim新增很多textobjects,它們可以豐富你的快捷鍵選中、復(fù)制、修改等操作的體驗(yàn)。?
使用方式:快捷鍵使用(以選中功能"v"來(lái)舉例,可以替換為"c"(刪除并修改)、"d"(刪除)、"y"復(fù)制等)(i
可以替換為a
,i
表示"inner",a
表示"outer",如va}
會(huì)選中包括}
本身的內(nèi)容,而vi}
則不會(huì))
viS
:選中當(dāng)前光標(biāo)下的子word(如VimEnter
,我們使用viw
會(huì)選中整個(gè)VimEnter
,但viS
只會(huì)選中Enter
或Vim
)vii
:選中當(dāng)前相同縮進(jìn)的所有行vR
:選中當(dāng)前相同縮進(jìn)往后剩余的行v%
:選中當(dāng)前光標(biāo)下對(duì)應(yīng)的括號(hào)結(jié)束位置vr
:選中剩余的段落vgG
:選中整個(gè)文件v_
:選中整行有字符的部分(除去空白字符)viv
:選中key-value的value部分vik
:選中key-value的key部分vL
:選中URLvin
:選中數(shù)字部分v!
:選中診斷部分(需要LSP)vil
:選中markdown的鏈接viC
:選中markdown的代碼塊部分vic
:選中css選擇器vi/
:選中javascript的正則表達(dá)式patternviD
:選中雙中括號(hào)內(nèi)容[[]]
注:可以修改lookForwardLines
的數(shù)量來(lái)改變我們使用textobjects時(shí)以當(dāng)前光標(biāo)為起點(diǎn)查找的行數(shù)。
配置:
2.35 nvim-treesitter-textobjects
推薦度:★★★★
主頁(yè):https://github.com/nvim-treesitter/nvim-treesitter-textobjects?
簡(jiǎn)介:基于nvim-treesitter的textobjects,可以幫你選中class、function等語(yǔ)法內(nèi)容?
使用方式:快捷鍵使用,類似于nvim-various-textobjs(以選中模式v
舉例)
選擇
vaf
:選中當(dāng)前函數(shù)vac
:選中當(dāng)前類內(nèi)容vas
:選中當(dāng)前scopevad
:選中當(dāng)前條件(if..else)
跳轉(zhuǎn)
]m
:跳到下一個(gè)函數(shù)的開(kāi)始處]]
:跳到下一個(gè)類的開(kāi)始處]s
:跳到下一個(gè)scope的開(kāi)始處]z
:跳到下一個(gè)fold的開(kāi)始處]M
:跳到下一個(gè)函數(shù)的結(jié)尾處][
:跳到下一個(gè)類的結(jié)尾處[m
:跳到上一個(gè)函數(shù)的開(kāi)始處[[
:跳到上一個(gè)類的開(kāi)始處[M
:跳到上一個(gè)函數(shù)的結(jié)尾處[]
:跳到上一個(gè)類的結(jié)尾處]d
:跳到下一個(gè)條件[d
:跳到上一個(gè)條件
注:更多配置和用法見(jiàn)Github主頁(yè)
配置:
2.36 nvim-treesitter-textsubjects
推薦度:★★★
主頁(yè):https://github.com/RRethy/nvim-treesitter-textsubjects?
簡(jiǎn)介:根據(jù)光標(biāo)位置自動(dòng)決定要選中什么textobject?
使用方式:快捷鍵使用(以v選中模式舉例)
v.
:根據(jù)光標(biāo)位置,智能選擇v,
:選中上一次選中的范圍v;
:選中容器外圍vi;
:選中容器內(nèi)
注:在某些情況下貌似有點(diǎn)卡,可能是因?yàn)閚vim-treesitter的樹(shù)比較長(zhǎng)的緣故,但是小文件還是很快的
配置:
3 其它配置
3.1 snip
在~/.config/lvim
下創(chuàng)建一個(gè)snippets
目錄,然后在里面創(chuàng)建一個(gè)package.json
,配置好指定格式的內(nèi)容,之后編輯對(duì)應(yīng)的json文件就可以為對(duì)應(yīng)的文件類型添加snippets了
參照 https://github.com/ADkun/my-lvim-config 的snippets
目錄
3.2 formatter和linter
在Mason插件中下載的formatter和linter,需要我們手動(dòng)將它們對(duì)應(yīng)到文件類型上。 以下是我的配置項(xiàng),可以參考配置。