Categories
程式開發

好用的82款Vim插件


好用的82款Vim插件 1

1.Alternate

在C或C++項目中,源文件和頭文件常常成對出現。例如,utils.cutils.h,你經常需要同時編輯這兩個文件。使用Alternate,你可以輸入:A命令,在.c和.h文件之間快速切換。如果你在.c文件中,就會切換到.h文件,如果你在.h文件中,就會切換到.c文件。

2.Bufexplorer

要高效地處理多個文件,你需要使用幾個不同的命令,如:ls(列出緩衝區)、:b(編輯緩衝區)、:bn(下一個緩衝區)和:bp(前一個緩衝區)。然而,通常情況下,在找到正確的文件之前,你的大部分時間都在鍵入:bn:bn:bn

Bufexplorer使得在vim中處理多個文件變得輕而易舉。它添加了be鍵綁定(是前導鍵),它會打開一個所有緩衝區的列表,移動到顯示文件名的行並按回車鍵,你就可以快速切換到另一個緩衝區。

3.Bufferize

許多vim命令繼承自vi,它們的輸出非常簡陋。它們把輸出打印到屏幕上,不能搜索或複制。如果你按空格太多次,內容就消失了。幾乎不可能搜索這個文本,有時你甚至不知道如何讓vim再次顯示它。

Bufferize解決了這個問題。它接受一個vim命令並從其輸出創建一個臨時緩衝區,然後在一個分屏窗口中打開它。例如:Bufferize map將在一個新窗口中顯示所有鍵盤映射,你可以搜索它們。要退出新窗口,只需使用常規的:q命令。

4.Bufferline

Bufferline補充了Bufexplorer(見上文),使它更容易處理多個文件/緩衝區。它在狀態行中打印所有打開的文件及其緩衝區編號的列表。你只需要瀏覽一下這個列表,輸入:b 5就可以切換到第5個文件/緩衝區,或者使用Bufexporer,點擊be後面跟/5,然後回車。

5.Bufkill

如果你在一個分割中打開了兩個緩衝區,並且你想要關閉一個緩衝區,那麼你可以使用:bd命令。不幸的是,這個命令也關閉了分割。通常,你不想關閉分割,而只想關閉緩衝區。在這種情況下,使用Buffkill的:BD命令,該命令將關閉緩衝區,但保留分割。

6.Characterize

Characterize添加了ga快捷方式,顯示光標下Unicode字符的名稱、代碼點值和十六進制值。

7.Clever-f

此擴展改進了用於查找下一個/前一個字符的fF快捷鍵。按下fa會轉到下一個a。按下Fa會轉到前一個a。沒有這個擴展,你必須再次輸入fa來找到下一個a或者按下分號;。類似地,你必須輸入Fa才能再次找到前面的a。如果你是一個vim老手,你已經在用;,,你最終會fafafafaFaFaFaFa

有了這個擴展,你可以再按一次f,它會搜索下一個字符,你可以再按一次F,它會搜索前一個a,所以,不用fafafafa,你現在可以用fafaff代替FaFaFaFa,你可以FaFFF。此外,當你按下fF時,它將顯示下一個/前一個匹配項,你立即就知道光標將跳轉到哪。

8.Colorscheme-gruvbox

深色系主題。灰色背景,淺綠色文字和功能。

9.Colorscheme-jellybeans

深色系主題。黑色背景,淺綠色文字,淺黃色功能。

10.Colorscheme-seoul256

深色系主題。灰色背景,淡藍色文字,淡黃色功能。

11.Commentary

最簡單、最快捷的註釋插件之一。按gcc將整個行註釋掉。按gc註釋掉一個可視化選中部分。再次按下相同的快捷鍵取消註釋。

12.Conflicted

這個插件有助於解決git合併衝突。假設你剛從github上的項目主分支中取出代碼,遇到了一個合併衝突錯誤。要解決這個問題,可以運行這個插件提供的:Conflicted命令。該命令創建一個三向diff,並將結果放在三個垂直分割的窗口中。左邊的分割是上游更改,中間的分割是工作更改,右邊的分割是本地更改。你可以接受上游diff或本地diff來解決衝突。為快速接受正確的diff, Conflicted提供了兩個鍵映射。dgu命令將使用上游diff,dgl將使用本地diff。要解決下一個衝突,使用:GitNextConflict命令。如果沒有更多的衝突,vim將退出,你可以git commit已解決衝突的文件。

13.Ctrlp

這個插件添加了ctrl+p綁定來打開一個模糊文件打開對話框。例如,如果你需要編輯math-config.json文件,你可以鍵入文件名的一些字母,如mat.jsmjson,甚至thfig(“th”是“math”的最後兩個字母,“fig”是“config”的最後三個字母)。 Ctrlp將立即縮小搜索範圍,並提供最佳匹配。它還可以用來打開mru文件(最近使用的文件)和緩衝區,你可以使用ctrl+rctrl+f快捷鍵在文件/mru/緩衝區模式之間切換。

14.Ctrlp-funky

Ctrlp-funky通過添加函數查找模式擴展了上面的Ctrlp插件。你可以運行:CtrlPFunky命令,立即在函數搜索模式下打開Ctrlp,或按下ctrl+p打開Ctrlp,然後按ctrl+r(或ctrl+f)幾次,進入函數搜索模式。例如,如果你有一個void debug_print()函數,你可以輸入vodepr(單詞void、debug、print的前兩個字母),然後回車,vim將跳轉到這個函數的定義。

15.Ctrlsf

有了這個插件,你可以快速搜索和替換大​​量的文本。當你運行:CtrlSF模式命令時,它將在左側創建一個包含所有匹配項的結果窗口。 “結果”窗口中還有一些圍繞匹配項的上下文行,方便你知道你正在查看的是否是正確的匹配項。現在,你可以直接在結果窗​​口中進行編輯。當你保存結果窗口時,更改也將保存在文件中。你也可以按下回車鍵,在右邊的窗口中打開每個結果並在那裡編輯它。

16.Delimitmate

Delimitmate會自動關閉引號和括號。例如,你輸入“會自動得到“”,而且光標位於兩個引號之間。

17.Diff-enhanced

這個插件為vimdiff添加了一個新的diff可視化方法,它試圖最小化差異的數量。當你處於diff模式時,輸入:EnhancedDiff patience命令,你就能夠更好地查看diff。

18.Dirvish

Dirvish支持慣用的緩衝區驅動開發,它作為一個文件瀏覽器補充了Nerdtree(見下文)。當你按下-鍵時,當前緩衝區將變成一個文件瀏覽器。你將看到當前工作目錄或當前打開的文件目錄中的所有文件。然後可以使用箭頭鍵hjkl和搜索操作符/導航這個目錄並查找文件。當你按下回車鍵時,Dirvish將退出,光標下的文件將在當前窗口中打開,作為一個新的緩衝區。當你有多個分割打開時,這個插件特別強大,因為你可以指定下一個文件在哪個分割中打開。你只需導航到分割,點擊-,找到文件,然後點擊回車,就可以在希望的分割中打開它了。

19.Dsf

Dsf是刪除周圍函數的縮寫。通過在函數調用中按下dsf,它將刪除周圍的函數名。例如,如果你有像print_r(get_post|s(true))這樣的代碼,並且你的光標位於|字符所在的位置,那麼當你按下dsf時,你將獲得輸出get_posts(true)

20.Easy-align

有了這個擴展,你就可以整齊地將文本對其到列中。它添加了:EasyAlign命令,你可以將其綁定到你想要綁定的任何鍵盤快捷鍵。當你執行它時,它會要求你輸入列分隔符字符,然後對所選文本進行格式化。例如,要對齊代碼使所有=符號都在同一列中,你可以使用V命令直觀地選擇行,然後運行:EasyAlign,接著=,然後回車。

21.Easymotion

Easymotion讓你可以更快地在文件中導航。它添加了\ w快捷方式,允許你快速跳轉到光標之後的任何單詞。它為每個單詞分配一個唯一的字母,當你下次按下它時,光標會立即跳轉到該單詞。它還添加了\b快捷方式,讓你可以快速地向後導航。類似地,如果你需要跳轉到上面或下面的任何一行,你可以使用\k\j快捷鍵。

22.Exchange

使用Exchange插件,你可以非常快速地交換兩個單詞。轉到第一個單詞並按cxw,然後轉到第二個單詞並再次按cxw。你就完成了這兩個詞位置的交換!

實際上,你不僅可以交換兩個詞,還可以交換任何兩個motion。按下cx後,下一個快捷鍵是motion(motion是移動光標的鍵盤快捷鍵)。例如,要交換兩個字符,可以執行cxl,然後再執行cxl(l是將光標向右移動一個位置的動作)。類似地,要交換兩個句子,你可以執行cxis,然後對第二個句子也執行cxis操作。在這種情況下,motion是選擇整個句子。

同樣,如果兩個motion相同,只要按一下.重複第一個操作。

23.Expand-region

通常,你希望選擇比剛剛選擇的文本多一點的文本。例如,你使用viw選擇了一個單詞,但隨後發現需要選擇整個引用字符串。有了這個插件,你可以按+,它會把當前的選擇擴展到下一個最大的文本對象。從字符到一個單詞、一個帶引號的字符串、一行、一段到整個文件。

24.Far

Far使查找和替換多個文件中的文本變得很容易。它添加了:Far pattern1 pattern2命令。當你運行這個命令時,它將屏幕分成兩半。在上半部分,它顯示了pattern1匹配的所有文件和行。在下半部分,可以預覽匹配的上下文。在上面的分割中,你可以使用hjkl鍵來導航匹配項。默認情況下,所有匹配項都將用pattern2替換,但你也可以使用t鍵取消匹配項的標記(並再次使用t標記它們)。選擇要替換的所有匹配項之後,運行:Fardo命令。這個命令將執行實際的替換。

Far也很適合於查找所有匹配項。你可以使用:F pattern命令,它將查找所有匹配的模式,並把它們顯示在兩個分割中,但是它不會執行替換。

25.Fugitive

使用Fugitive,你可以直接從vim使用git。它添加了:Git命令(或簡寫為:G),該命令運行git status,並在一個分割窗口中顯示結果。然後,可以使用鍵盤快捷鍵s來暫存(git add)一個文件,使用u來恢復(git reset)一個文件。暫存文件之後,可以按cc創建提交。我還不知道如何進行git推送,所以這是我需要學習的內容。如果我能夠在不離開vim的情況下進行代碼推送和部署,那將非常方便。

26.Fzf

Fzf是Ctrlp(見上文)的一個替代方案。它為快速打開文件和切換緩衝區添加了幾個命令。這些命令是:Files:Buffers。如果你以前是按多次tab鍵來補全文件名和緩衝區名,那麼現在你只需要鍵入文件名或緩衝區名的幾個字母。例如,如果你需要打開options.c文件,你可以直接輸入opt.c,甚至是oc,Fzf都會為你提供最佳匹配。

27.Fzf-mru

Fzf-mru增加了一個可以通過:FZFMru命令訪問的mru模式。此模式允許你快速訪問最近編輯的文件。假設你昨天在從事scraper項目相關的工作。今天,當你進入mru模式時,只需要輸入scra,它就會顯示你昨天處理的scraper項目的所有文件。

28.Gitgutter

Gitgutter增加了兩個有用的東西。第一個列位於vim最左邊,它快速顯示當前文件的git diff信息。你可以快速查看添加和更改了哪些行。第二個是]c[c映射,讓你可以在更改的行之間跳轉。

29.Goyo

我最近切換到Goyo模式編程。當你輸入:Goyo命令時,這個插件會將內容居中,並刪除行號和狀態行,這樣你就可以專注於無干擾的編碼了。如果還讓vim全屏,那就更好了。

30.Grepper

Grepper改進了vim中的查找,並增加了對ripgrep的支持。你可以輸入:Grepper,然後輸入你的搜索查詢,它將找到所有匹配項並在quickfix窗口中加載它們。然後你可以使用vim的:cn:cp命令來導航到下一個/前一個匹配項,或者使用Unimpaired插件(見下文)的快捷方式]q[q

這個插件的作者建議將它與qfenter.vim插件一起使用。這是我還要嘗試的東西。

31.Gv

Gv將git提交瀏覽器添加到vim中。你可以運行:GV命令,它將顯示整個提交樹。然後,你可以在提交窗口中按下回車或o來查看各個差異。要退出diff查看器,請按q。如果你只對當前文件的git日誌感興趣,那麼可以使用:GV!命令。

32.Illuminate

Illuminate高亮顯示當前可見緩衝區中光標下這個單詞的所有出現。例如,如果光標在單詞var上,那麼所有其他的var也將高亮顯示。

33.Interestingwords

這個插件允許你同時高亮顯示多個單詞。它添加了快捷方式k,可以更改光標下單詞的背景顏色,以及文件中出現的所有相同單詞。你還可以使用nN來跳轉到下一個/上一個高亮顯示的單詞。當你處理複雜的代碼並需要跟踪多個變量的使用情況時,它非常有用。

34.Linediff

Linediff讓你可以快速比較兩個文本塊。可視地選擇第一個文本塊並運行:Linediff命令。然後可視地選擇第二個塊並再次運行相同的命令。這個插件將創建一個新的標籤頁,將兩個文本塊的差異垂直分割。如果結果看起來太冗長,運行:EnhancedDiff patience命令(來自上面的Diff-enhanced插件)來改進差異。

你還可以使用這個插件快速解決git合併衝突。如果你打開的文件中存在合併衝突,將光標放在合併衝突標記<<<<<<>>>>>之間,並運行:LinediffMerge命令。接下來,插件會自動創建一個垂直分割,分割合併衝突差異,你可以在左邊或右邊的分割中進行編輯,並通過運行:LinediffPick命令來自動解決合併。

35.Listtoggle

一旦你對vim的熟練達到了一定的程度,你將開始一直使用quickfix窗口(以及位置列表窗口)。查找結果將在quickfix中,linting錯誤將在quickfix中,編譯錯誤將在quickfix中,待辦事項列表將在quickfix中。一切都會很快解決。你會一直關閉和打開quickfix。不幸的是,沒有簡單的方法來切換quickfix窗口和位置列表窗口。你必須使用:copen:cclose命令來打開/關閉quickfix,以及:lopen:lclose來打開/關閉位置列表。這打字太多了。

Listtoggle使它更加簡單,並增加了兩個快捷方式來快速切換它們。q綁定將切換quickfix窗口,而l綁定將切換位置列表窗口。

36.Locate

通常,你需要查找當前文件中的所有出現。你不想來一次全局搜索,你不想搜索和替換,你不想要任何分割,你只想要一個所有結果的總覽。 Locate通過:Locate命令(或簡寫為:L)提供完全相同的功能。只需鍵入:L pattern,這個插件就會打開一個快速位置列表,其中包含當前文件中所有出現該模式的地方。你可以使用快捷方式l切換位置列表(由Listtoggle插件提供,見上文),你還可以通過快捷方式]l(下一個結果)和[l(前一個結果)(由Unimpaired插件提供,見下文)來瀏覽結果。

37.Matchtagalways

這個插件突出顯示了光標所在位置最內層的HTML打開和關閉標記。例如,如果光標在

cursor here

,那麼這個插件將突出顯示

標籤。

38.Matchup

Matchup添加了快捷方式%,允許你在匹配的括號對之間快速跳轉。如果你的光標在{字符上,那麼按%後它將跳到}。如果你再次按%,它將跳回{。它還添加了快捷方式z%,使你可以向前跳轉到下一對圓括號內。假設你有一個函數pri|nt_data("hi", 7)和你的光標在|。然後,在按下z%之後,光標將出現在函數參數中。

39.Nerdcommenter

Nerdcommenter是另一個代碼註釋插件。借助Commentary (見上文),你可以使用gc快捷方式快速切換註釋,但是Nerdcommenter提供了對註釋的更多控制。例如,你可以使用cm快捷方式執行多行註釋,並使用cA快捷方式在行尾添加註釋。

40.Nerdtree

Nerdtree是一個文件管理器。它在vim的左側顯示當前項目的完整目錄和文件樹結構。要打開和關閉Nerdtree,請運行:NERDTreeToggle命令。方便起見,你可以將它綁定到快捷方式t。當它打開時,你可以使用常規的hjkl鍵進行導航。使用鍵O打開項目中的所有目錄,然後使用常規的/search操作符搜索文件。要在右側打開光標下的文件,請按下ok鍵。要查看隱藏的文件,請使用I鍵。與Dirvish(見上文)相比,它支持文件管理器驅動的開發。 Nerdtree總是在右側打開文件,而不是指定在哪裡打開文件。

41.Nerdtree-syntax-highlight

這個插件將語法高亮顯示添加到Nerdtree中。現在,文件和目錄有了不同的顏色。

42.Peekaboo

Vim有許多不同的寄存器。當你複製文本時,它會進入"寄存器。當你刪除文本時,它會進入數字寄存器。然後還有小寫和大寫等寄存器供你個人使用。

當你要使用寄存器時,這個插件會預覽它們。當你按下"鍵時,它會在右側打開一個寄存器備忘單,你可以看到每個寄存器的內容並選擇正確的寄存器。你還可以按空格鍵加大寄存器備忘單。

43.Qfgrep

Quickfix是vim最大的特性之一。不幸的是,一旦用結果填充了quickfix列表,它就會被凍結。你無法進一步過濾quickfix列表。這種行為不太合理,因為你總是希望細化結果。

Qfgrep允許你這樣做。現在,你可以在quickfix窗口中過濾結果。使用g快捷方式過濾結果,v轉換過濾結果,r還原原始條目。它還添加了:QFGrepPat命令,該命令執行與g相同的操作,:QFGrepPatV則執行與v相同的操作。

44.Qlist

Qlist添加了:Ilist函數,它是vim內置的:Ilist函數的改進版本。內置的:ilist函數來自一個計算機沒有多少內存的時代,所以它當時不是很有用,因為它會一股腦把所有東西都打印到屏幕上,你無法使用這樣的結果(見上文的Bufferize插件)。改進後的:Ilist函數從結果中創建一個quickfix列表。你現在可以運行:Ilist pattern,這個插件將在當前以及包括的項目文件中找出所有用到的單詞模式,並把它們放在quickfix窗口中,正是你想要顯示所有結果的地方。

45.Quickfix-reflector

你不僅希望篩選quickfix結果(上面的Qfgrep),還希望編輯quickfix窗口,就好像它只是另一個緩衝區一樣。這個插件使得quickfix窗口可以修改。現在可以使用dd刪除quickfix條目,使用i添加新條目。你還可以直接編輯quickfix結果,當你通過:w保存quickfix窗口時,文件也會得到更新。

46.Ragtag

Ragtag為處理HTML標籤添加了三個有用的鍵盤快捷鍵。第一個是ctrl+x/關閉任何打開的標籤。例如,如果光標在

標籤中,那麼你可以立即閉合它並得到

。第二個是ctrl+ xSPACE,它根據剛剛輸入的單詞創建一個開始和結束標籤。例如,如果你輸入tag,然後立即按下這個快捷鍵,那麼你將得到|,其中|是光標。第三種是ctrl+xENTER,它的工作方式與前一種快捷方式相同,但在兩個標籤之間放了一個空行。

47.Ranger

這個插件讓你可以跳轉到外部Ranger文件管理器,在vim中打開一個文件。它類似於Dirvish(見上文),讓你可以輕鬆地進行緩衝區驅動的開發。當你在任何窗口中運行:Ranger命令時,它將啟動ranger進程。然後,當你選擇一個文件時,它將在選擇的文件中作為一個新的緩衝區打開。

48.Repeat

Repeat改進了.命令。它讓你可以重複其他插件的命令和動作。例如,如果你使用Surround插件(見下文)將文本括在引號中,那麼按下.會重複這個動作。

49.Rooter

由於vim不是IDE,所以它幾乎沒有項目的概念,也不知道項目的根目錄是什麼。當你嘗試打開一個文件時,vim會搜索主目錄或其他目錄,而不是項目目錄。

這個插件會自動將vim的當前工作目錄設置為項目目錄,使得處理項目變得更加簡單。它通過查找最根部的.git目錄來實現。通常,此類目錄表明了項目的起點。

50.Scratch

Vim的文檔提到了一種稱為scratch緩衝區的特殊緩衝區類型。這個插件實現了它。 Scratch緩衝區是臨時丟棄緩衝區。當你在做一個項目的時候,快速筆記是很有用的。使用:Scratch命令打開它。光標將跳轉到頂部的scratch窗口。當你將光標移動到另一個窗口時,scratch窗口將自動關閉。

51.Signature

當使用標記時,沒有一種可視化的方式來告訴你在哪裡添加了它們。你可能記得一兩個標記,但當你再加的時候,你就迷失了。這個插件解決了這個問題,它會在最左邊的列中顯示標記。你可以用默認快捷方式mamb、…添加和切換標記,用dmadmb、…刪除單個標記,用m-刪除所有標記,用]'['跳到下一個和前一個標記,用m/將所有標記放到位置列表窗口中。

52.Speeddating

在正常模式下,ctrl+actrl+x可以實現數值遞增和遞減。這個插件使這些鍵盤快捷鍵也可以實現日期和時鐘時間的增加。例如,如果光標位於字符串2000-01-31上時,按ctrl+a將使其變為2000-02-01,按ctrl+z將使其變為2000-01-30

53.Splitjoin

Splitjoin讓你可以將代碼片段從單行語句切換到多行語句,反之亦然。假設你有一個單行HTML代碼片段

hi

,然後按gS(分割),它將轉換成一個多行HTML代碼片段

n hi n

。如果你在這個多行代碼段上按下gJ(合併),它將再次變為一個單行代碼段。

54.Surround

借助Surround,你可以快速刪除、更改和添加文本周圍的匹配符號對。假設你有一個字符串"hello world"。按下ds",引號將被刪除,字符串將變成hello world。按下c"‘鍵,雙引號會變成單引號,字符串會變成’hello world’。你還可以按下cs"

,這將把引號改為

HTML標籤

,字符串將變成

hello world

。如果你有一個普通的字符串hello world,那麼要將它括在引號中,請使用v選擇它,然後按S並輸入包圍符號。如果你有一個單詞hello,你想把它用單引號括起來,按ysiw'

55.Swap

Swap讓你可以快速地交換單詞或逗號分隔的函數參數。例如,如果你有一個函數print(a, b, c),那麼你可以按g>,它會變成print(b, a, c)。按g<,它會再次變成print(a, b, c)。你還可以通過按gs進入可視化交換模式。然後使用hjkl鍵來交換參數。

56.Syntax-css3

CSS3語法高亮插件。

57.Syntax-dockerfile

Dockerfile語法高亮插件。

58.Syntax-html5

HTML5語法高亮插件。

59.Syntax-i3config

i3窗口管理器配置文件語法高亮插件。

60.Syntax-javascript

JavaScript語法高亮插件。

61.Syntax-json

JSON語法高亮插件。

62.Syntax-nginx

Nginx配置文件語法高亮插件。

63.Syntax-php

PHP語法高亮插件。

64.Syntax-tmux

tmux配置文件語法高亮插件。

65.System-copy

Vim終端沒有用於從系統剪貼板複製和粘貼的寄存器*+。這個插件添加了cp快捷方式,通過調用外部實用程序xsel將所選文本或motion複製到系統剪貼板。它還具有從系統剪貼板粘貼的快捷方式cv

66.Tabular

Tabular的功能與EasyAlign(見上文)相同。它對文本進行列對齊。與EasyAlign相比,它的一個優點是,你可以直接將用於對齊的正則表達式傳給它。與正則表達式相匹配的位置將會對齊。例如:Tabular /regex將創建整齊的regex列。

67.Tagalong

這個插件可以很容易地重命名HTML的開閉標籤對。你只需要重命名其中一個,這個插件會自動重命名另一個。例如,如果你有

,你把開標籤

重命名為

,那麼閉標籤會自動重命名為

,你將得到輸出

68.Targets

掌握vim的一個步驟是學習使用文本對象。文本對象允許你操作整個文本結構,而不是單個字符。 Vim已經附帶了許多文本對象——你可以訪問單詞、句子、段落和代碼塊。這個插件增加了十幾個文本對象。例如,你可以使用di刪除逗號分隔的項,或者你可以使用cincil來更改前一個和後一個逗號分隔的項,你可以使用ci+來更改sum元素,等等。

69.Textobj-user

從頭編寫自己的文本對象非常困難,因為在調用文本對象時必須精確複製vim的行為,並了解所有的陷阱和缺陷。這個插件提供了一個快速簡單的接口,讓你可以實現自己的文本對象。 “textobj”插件有一個完整的生態系統,使用這個插件可以添加各種有用的文本對象。

70.Textobj-entire

這個插件使用Textobj-user(見上文)創建一個文本對象ie和ae來操作整個文件。例如,要選擇整個文件,你可以執行vae,要刪除整個文件,你可以執行vaed或dae。

71.Textmanip

這個插件讓你可以直觀地移動選中的文本。例如,你能可視化地選擇一個單詞,然後使用快捷鍵ctrl+h和ctrl+l將其向左或向右移動。類似地,你可以使用快捷鍵ctrl+j和ctrl+k向下移動整個行。

72.Thesaurus-query

有了這個插件,你可以訪問Libreoffice同義詞典。一旦配置了它,你可以使用:Thesaurus word命令來查找與word相關的所有單詞,你還可以使用:ThesaurusW來查找與光標下的單詞相關的所有單詞。

73.Tmux-complete

當你處於流程中時,會同時發生許多事情,並且會打開許多tmux窗口和窗格。一個顯示git日誌,另一個用於測試,還有一個顯示幫助手冊,等等。通常,你需要從tmux窗格獲取信息到vim。通常,你必須用鼠標來複製它,但這非常低效。有了這個插件,你可以在插入模式下按下ctrl+x ctrl+u,從任何tmux窗口/窗格補全單詞。它將提供來自所有tmux窗口/窗格的所有單詞的列表。

74.Traces

當用:s/old/new命令替換文本時,執行這個命令後才能看到更改。這個插件讓你可以在輸入時預覽old匹配和用於替換的部分new,你可以直接看到你是否做對了。

75.Ultisnips

Ultisnips是一個代碼片段引擎。當你按下tab鍵時,它會檢查最後鍵入的Token並將其擴展為代碼段。為了讓它發揮作用,你需要創建一個language.snippets文件,並在其中寫入代碼片段。例如,你可以創建php.snippets,加入一個if代碼段if ($1) { $0 }。現在,當你在編寫PHP代碼鍵入if並按下tab鍵時,它將擴展為if(|){},你的光標將位於|字符所在的位置。如果再次按下tab,它將跳轉到if () { | }花括號之間的$0 Token。

76.Undoquit

通常,你可能因為操作太快關閉了一個你不想關閉的窗口。有了這個插件,你現在可以按ctrl+w+u撤消關閉操作。

77.Unicode

這個插件讓你可以快速搜索和插入Unicode字符。例如,如果你想插入一個Unicode兔子符號,你可以輸入rabbit,然後按下ctrl+x ctrl+z。輸入文字rabbit將被“兔子”的表情符號取代。

78.Unimpaired

許多命令都是成對的。例如:bn:bp跳到下一個/前一個緩衝區,:cn:cp跳到下一個/前一個quickfix列表項,:ln:lp跳到下一個/前一個位置列表項,等等。此插件為這些命令添加了靈活的快捷方式。你現在可以用]b[b跳到下一個/前一個緩衝區,用]q[q跳到下一個/前一個quickfix條目,用]l[l跳到下一個/前一個位置列表條目,等等。

79.vimade

當你使用多個分割窗口時,在短暫的分心之後,很容易忘記你在哪個分割窗口中工作。這個插件會淡化其他所有的分割線,使當前聚焦窗口的分割線清晰可見。

80.Visual-split

通常,你需要將註釋、函數定義或代碼片段在上方折疊,使其始終可見。通常的方法是用ctrl+w+s分割窗口,然後用10ctrl+w+-重新調整窗口大小。這個插件合併了這兩個動作。現在你可以直觀地選擇該區域並按下ctrl+w+gss。該插件將分割窗口並調整大小,使其與所選的行完全匹配。

81.Visual-star-search

有兩個操作符可以搜索光標下的單詞。它們是*(向前搜索)和#(向後搜索)。不幸的是,在可視化模式中,它們不會搜索可視化選擇部分,你也不能搜索包含特殊字符的單詞。例如,如果單詞是h#e#l#l#o,那麼這些操作符將選擇並蒐索這個單詞中的一個字母,這不是你想要的。

使用此插件,你可以搜索可視化選擇的序列,它可以包含任何特殊字符。使用v命令進行選擇,然後按*#進行搜索。

82.Writeable-search

Writeable-search類似於CtrlSF(見上文)。它讓你可以快速查找結果並立即在結果窗口中編輯它們。當你運行:WritableSearch pattern命令時,它將在當前目錄中的所有文件中搜索這個pattern,並打開一個包含結果的新選項卡。然後,你可以編輯結果,當你在相同的結果窗口中執行:w操作時,它會更改更新文件。如果你已經在quickfix窗口中有一個要修復內容的列表,那麼你可以通過:WritableSearchFromQuickfix命令將它們轉移到這個插件中進行編輯。

英文原文:vim plugins that I use