Vimscript 舊社會(huì)下的插件配置方式

2018-02-24 16:02 更新

我們需要講到的第一件事是如何配置我們的插件。在過去,這會(huì)是一次混亂的折騰, 但現(xiàn)在我們有一個(gè)工具可以非常方便地安裝Vim插件。

我們需要先過一下基本的配置方式,然后我們會(huì)講到如何省下麻煩。

基本配置方式

Vim支持把插件分割成多個(gè)文件。你可以在~/.vim下創(chuàng)建許多不同種類的文件夾來放置不同的內(nèi)容。

我們現(xiàn)在將講述其中最為重要的幾個(gè)文件夾,但不會(huì)在上面花費(fèi)太多時(shí)間。 當(dāng)我們創(chuàng)造Potion插件時(shí),我們會(huì)逐一認(rèn)識(shí)它們的。

在我們繼續(xù)前進(jìn)之前,需要先確定一些用詞規(guī)范。

我將用"插件"表示一大堆做一系列相關(guān)事情的Vimscript代碼。 在Vim里,"插件(plugin)"有一個(gè)更專業(yè)的定義,它表示"~/.vim/plugins/下的一個(gè)文件"。

在大多數(shù)時(shí)間里,我將使用第一個(gè)定義。如果指的是第二個(gè)定義,我會(huì)特意指明。

~/.vim/colors/

Vim將會(huì)查找~/.vim/colors/mycolors.vim并執(zhí)行它。 這個(gè)文件應(yīng)該包括生成你的配色方案所需的一切Vimscript命令。

本書中,我們不會(huì)談到配色方案。如果想創(chuàng)造屬于自己的配色方案,你應(yīng)該從一個(gè)現(xiàn)存的配色方案上改造出來。 記住,:help將與你常在。

~/.vim/plugin/

~/.vim/plugin/下的文件將在_每次_Vim啟動(dòng)的時(shí)候執(zhí)行。 這里的文件包括那些無(wú)論何時(shí),在啟動(dòng)Vim之后你就想加載的代碼。

~/.vim/ftdetect/

~/.vim/ftdetect/下的文件在每次你啟動(dòng)Vim的時(shí)候_也會(huì)_執(zhí)行。

ftdetect是"filetype detection"的縮寫。 這里的文件_僅僅_負(fù)責(zé)啟動(dòng)檢測(cè)和設(shè)置文件的filetype類型的自動(dòng)命令。 這意味著它們一般不會(huì)超過一兩行。

~/.vim/ftplugin/

~/.vim/ftplugin/下的文件則各不相同。

一切皆取決于它的名字!當(dāng)Vim把一個(gè)緩沖區(qū)的filetype設(shè)置成某個(gè)值時(shí), 它會(huì)去查找~/.vim/ftplugin/下對(duì)應(yīng)的文件。 比如:如果你執(zhí)行set filetype=derp,Vim將查找~/.vim/ftplugin/derp.vim。 一旦文件存在,Vim將執(zhí)行它。

Vim也支持在~/.vim/ftplugin/下放置文件夾。 再以我們剛才的例子為例:set filetype=derp將告訴Vim去執(zhí)行~/.vim/ftplugin/derp/下的全部*.vim文件。 這使得你可以按代碼邏輯分割在ftplugin下的文件。

因?yàn)槊看卧谝粋€(gè)緩沖區(qū)中執(zhí)行filetype時(shí)都會(huì)執(zhí)行這些文件,所以它們_只能_設(shè)置buffer-local選項(xiàng)! 如果在它們中設(shè)置了全局選項(xiàng),所有打開的緩沖區(qū)的設(shè)置都會(huì)遭到覆蓋!

~/.vim/indent/

~/.vim/indent/下的文件類似于ftplugin下的文件。加載時(shí)也是只加載名字對(duì)應(yīng)的文件。

indent文件應(yīng)該設(shè)置跟對(duì)應(yīng)文件類型相關(guān)的縮進(jìn),而且這些設(shè)置應(yīng)該是buffer-local的。

是的,你當(dāng)然可以把這些代碼也一并放入ftplugin文件, 但最好把它們獨(dú)立出來,讓其他Vim用戶理解你的意圖。這只是一種慣例,不過請(qǐng)盡量體貼用戶并遵從它。

~/.vim/compiler/

~/.vim/compiler下的文件非常類似于indent文件。它們應(yīng)該設(shè)置同類型名的當(dāng)前緩沖區(qū)下的編譯器相關(guān)選項(xiàng)。

不要擔(dān)心不懂什么是"編譯器相關(guān)選項(xiàng)"。我們等會(huì)會(huì)解釋。

~/.vim/after/

~/.vim/after文件夾有點(diǎn)神奇。這個(gè)文件夾下的文件會(huì)在每次Vim啟動(dòng)的時(shí)候加載, 不過是在~/.vim/plugin/下的文件加載了之后

這允許你覆蓋Vim的默認(rèn)設(shè)置。實(shí)際上你將很少需要這么做,所以不用理它, 除非你有"Vim設(shè)置了選項(xiàng)x,但我想要不同的設(shè)置"的主意。

~/.vim/autoload/

~/.vim/autoload文件夾就更加神奇了。事實(shí)上它的作用沒有聽起來那么復(fù)雜。

簡(jiǎn)明扼要地說:autoload是一種延遲插件代碼到需要時(shí)才加載的方法。 我們將在重構(gòu)插件的時(shí)候詳細(xì)講解并展示它的用法。

~/.vim/doc/

最后,~/.vim/doc/文件夾提供了一個(gè)你可以放置你的插件的文檔的地方。 Vim對(duì)文檔的要求是多多益善(看看我們執(zhí)行過的所有:help命令就知道),所以為你的插件寫文檔是重要的。

練習(xí)

重讀本章。我沒開玩笑。確保你(大體上)明白我們講過的每一個(gè)文件夾。

作為額外的加分,找一些你正在用的Vim插件看看它們?nèi)绾谓M織代碼文件。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)