笨方法學(xué)VS筆記(制作插件前內(nèi)容)

vim狀態(tài)行不顯示問題:set laststatus=2

移除狀態(tài)行:set laststatus=0

Set tabstop=4 tab縮進(jìn)4個(gè)空格

在名稱的前面加一個(gè) & 符號(hào)是告訴Vim你正在引用這個(gè)選項(xiàng)允蚣,而不是在使用一個(gè)名稱剛好相同的變量迷捧。

如果你想將某個(gè)選項(xiàng)作為變量來(lái)設(shè)置它的本地值寄锐,而不是全局值妆距,你需要在變量名前面加前

綴梅鹦。

你也可以將寄存器當(dāng)作變量來(lái)讀取和設(shè)置。

當(dāng)某個(gè)變量由一個(gè)字符和冒號(hào)開頭症汹,那么這就表示它是一個(gè)作用域變量塑崖。

對(duì)字符串進(jìn)行比較時(shí)使用==#或者==?進(jìn)行大小寫敏感與大小寫不敏感的比較來(lái)減少因?yàn)橛脩粼O(shè)置而造成的問題(例如 set ignorecase)。

沒有作用域限制的Vimscript函數(shù)必須以一個(gè)大寫字母開頭惹苗!

Vimscript里調(diào)用函數(shù)有兩種不同的方法:使用call命令 --在表達(dá)式里調(diào)用函數(shù)殿较。

一個(gè)vimscript函數(shù)不返回一個(gè)值,它隱式返回0桩蓉。

當(dāng)你在Vim中定義了一個(gè)接受可變參數(shù)的函數(shù)淋纲, a:0 將被設(shè)置為你額外給的參數(shù)數(shù)量(譯注:注意是額外的參數(shù)數(shù)量)。

可以使用 a:1 , a:2 等等來(lái)引用你的函數(shù)接受的每一個(gè)額外參數(shù)触机。

當(dāng)一個(gè)函數(shù)可以接受可變參數(shù)帚戳, a:000 將被設(shè)置為一個(gè)包括所有傳遞過(guò)來(lái)的額外參數(shù)的列表(list)。不能對(duì)列表使用echom儡首。

不能對(duì)參數(shù)變量重新賦值片任。

. 是Vim中的"連接字符串"運(yùn)算符,可以用來(lái)連接字符串蔬胯。

echom的輸出跟echo的輸入有時(shí)會(huì)有所不同对供。主要是對(duì)特殊字符的轉(zhuǎn)義顯示 \n ^@

使用單引號(hào)將告訴Vim,你希望字符串所見即所得,無(wú)視轉(zhuǎn)義字符串产场。 一個(gè)例外是一行中連續(xù)兩個(gè)單引號(hào)將產(chǎn)生一個(gè)單引號(hào)鹅髓。(譯注:相當(dāng)于某種轉(zhuǎn)義)

execute 命令用來(lái)把一個(gè)字符串當(dāng)作Vimscript命令執(zhí)行。

normal 命令簡(jiǎn)單地接受一串鍵值并當(dāng)作是在normal模式下輸入的京景。就是那么簡(jiǎn)單窿冯!

normal命令將顧及當(dāng)前的所有映射。這意味著我們需要給 normal 提供類似于 nnoremap 之于 nmap 的版本确徙, 否則我們沒法使用它——考慮到我們猜測(cè)不了用戶的映射方式醒串。在寫Vim腳本時(shí),你應(yīng)該總是使用 normal! 鄙皇,永不使用 normal 芜赌。不要信任用戶在 ~/.vimrc 中的映射。

normal! 不會(huì)解析像 <cr> 那樣的特殊字符序列伴逸。之前我們嘗試過(guò)用 normal! 來(lái)執(zhí)行一個(gè)搜索命令卻無(wú)法輸入必須的回車來(lái)開始進(jìn)行搜索缠沈。 結(jié)合 execute 和 normal! 將解決這個(gè)問題。execute 允許你創(chuàng)建命令错蝴,因而你能夠使用Vim普通的轉(zhuǎn)義字符串來(lái)生成你需要的"打不出"的字符洲愤。

我們用 <c-u> 來(lái)執(zhí)行"從光標(biāo)所在處刪除到行首的內(nèi)容",移除多余文本顷锰。

使用負(fù)數(shù)索引一個(gè)字符串會(huì)沒有報(bào)錯(cuò)地得到一個(gè)空字符串禽篱。

當(dāng)鍵僅由字母,數(shù)字和/或下劃線組成時(shí)馍惹,Vimscript也支持Javascript風(fēng)格的"點(diǎn)"查找。

如果一個(gè)Vimscript變量要引用一個(gè)函數(shù)玛界,它就要以大寫字母開頭万矾。

~/.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ì)超過(guò)一兩行。

~/.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ú)立出來(lái)褪贵,讓其他Vim用戶理解你的意圖。這只是一種慣例抗俄,不過(guò)請(qǐng)盡量體貼用戶并遵從它脆丁。

~/.vim/compiler/

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

~/.vim/after/

~/.vim/after 文件夾有點(diǎn)神奇槽卫。這個(gè)文件夾下的文件會(huì)在每次Vim啟動(dòng)的時(shí)候加載, 不過(guò)是在 ~/.vim/plugin/ 下的文件加載了之后胰蝠。這允許你覆蓋Vim的默認(rèn)設(shè)置歼培。實(shí)際上你將很少需要這么做,所以不用理它茸塞, 除非你有"Vim設(shè)置了選項(xiàng) x 躲庄,但我想要不同的設(shè)置"的主意。

~/.vim/autoload/

~/.vim/autoload 文件夾就更加神奇了钾虐。事實(shí)上它的作用沒有聽起來(lái)那么復(fù)雜噪窘。簡(jiǎn)明扼要地說(shuō): autoload 是一種延遲插件代碼到需要時(shí)才加載的方法。

~/.vim/doc/

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

Vim設(shè)置 runtimepath 以便查找要加載的文件浩习。

Vim自動(dòng)替你把 ftdetect/*.vim 文件包裝成自動(dòng)命令組。

為了高亮某個(gè)語(yǔ)法:

你首先要用 syntax keyword 或相關(guān)命令(我們待會(huì)會(huì)提到)掘托,定義一組語(yǔ)法類型瘦锹。

然后你要把這組類型鏈接到高亮組(highlighting groups)。 一個(gè)高亮組是你在配色方案里定義的東西,比如"函數(shù)名應(yīng)該是藍(lán)色的"弯院。

自動(dòng)加載調(diào)用的函數(shù)要使用絕對(duì)路徑進(jìn)行定義辱士。當(dāng)Vim找到它需要自動(dòng)加載的文件后,它在調(diào)用對(duì)應(yīng)函數(shù)之前就加載了整個(gè)文件听绳。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颂碘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子椅挣,更是在濱河造成了極大的恐慌头岔,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鼠证,死亡現(xiàn)場(chǎng)離奇詭異峡竣,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)量九,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門适掰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人荠列,你說(shuō)我怎么就攤上這事类浪。” “怎么了肌似?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵费就,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我川队,道長(zhǎng)力细,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任固额,我火速辦了婚禮艳汽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘对雪。我一直安慰自己,他們只是感情好米绕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布瑟捣。 她就那樣靜靜地躺著,像睡著了一般栅干。 火紅的嫁衣襯著肌膚如雪迈套。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天碱鳞,我揣著相機(jī)與錄音桑李,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛贵白,可吹牛的內(nèi)容都是我干的率拒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼禁荒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼猬膨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起呛伴,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勃痴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后热康,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沛申,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年姐军,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铁材。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庶弃,死狀恐怖衫贬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情歇攻,我是刑警寧澤固惯,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站缴守,受9級(jí)特大地震影響葬毫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屡穗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一贴捡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧村砂,春花似錦烂斋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豪诲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工蝶念, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抛腕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓媒殉,卻偏偏與公主長(zhǎng)得像担敌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子适袜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容