Vimscript 舊社會下的插件配置方式

2018-02-24 16:02 更新

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

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

基本配置方式

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

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

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

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

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

~/.vim/colors/

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

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

~/.vim/plugin/

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

~/.vim/ftdetect/

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

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

~/.vim/ftplugin/

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

一切皆取決于它的名字!當(dāng)Vim把一個緩沖區(qū)的filetype設(shè)置成某個值時, 它會去查找~/.vim/ftplugin/下對應(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下的文件。

因為每次在一個緩沖區(qū)中執(zhí)行filetype時都會執(zhí)行這些文件,所以它們_只能_設(shè)置buffer-local選項! 如果在它們中設(shè)置了全局選項,所有打開的緩沖區(qū)的設(shè)置都會遭到覆蓋!

~/.vim/indent/

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

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

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

~/.vim/compiler/

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

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

~/.vim/after/

~/.vim/after文件夾有點神奇。這個文件夾下的文件會在每次Vim啟動的時候加載, 不過是在~/.vim/plugin/下的文件加載了之后

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

~/.vim/autoload/

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

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

~/.vim/doc/

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

練習(xí)

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號