其實(shí)僅僅從它自身來(lái)講,Vim已經(jīng)是最好的shell編輯器之一了,不過(guò),只要再經(jīng)過(guò)一點(diǎn)點(diǎn)的調(diào)整,你就能把Vim從“最好的shell編輯器”變 成“最好的shell IDE”。有兩種方法讓你實(shí)現(xiàn)這個(gè)愿望,一種是自己調(diào)整,編寫(xiě)功能,估計(jì)對(duì)于大多數(shù)愛(ài)好者來(lái)說(shuō)太難了一些。另一種方法就是安裝Fritz Mehner編寫(xiě)的Bash Support插件。
先介紹一下怎么安裝這個(gè)插件吧,雖然估計(jì)大家都知道。去剛才說(shuō)的那個(gè)網(wǎng)頁(yè)下載zip壓縮包,拷貝到你的~/.vim目錄中,解壓縮即可。然后你可以通過(guò)編輯~/.vimrc來(lái)包含自己的個(gè)人詳細(xì)信息:
let g:BASH_AuthorName = ‘Your Name’
let g:BASH_Email = ‘my@email.com’
let g:BASH_Company = ‘Company Name’
這些變量將用于填充一些工程中的文件頭,待會(huì)會(huì)有詳細(xì)介紹 。
這個(gè)插件支持GUI和文本兩種模式的Vim,當(dāng)然,在GUI模式下會(huì)易用性更強(qiáng)(似乎好多插件都是這樣的,主要是有菜單欄嘛)。所以建議最好用 gVim來(lái)編寫(xiě)。一旦Bash Support插件被安裝上,gVim會(huì)自動(dòng)添加一個(gè)叫做Bash的新菜單,其中包括了所有這個(gè)插件支持的功能。讓我們來(lái)瀏覽一下其中一些特性,來(lái)看看 Bash Support插件是如何讓Bash腳本的編寫(xiě)變得輕而易舉的。
文件頭和注釋
如果你喜歡在腳本中廣泛使用注釋--我希望編寫(xiě)者都能喜歡--你肯定會(huì)非常樂(lè)于使用Bash Support。它提供了各種各樣的功能來(lái)讓對(duì)你的腳本增加注釋變得非常簡(jiǎn)單,你可以通過(guò)它實(shí)現(xiàn)編程自動(dòng)化,或者僅僅需要點(diǎn)擊幾下鼠標(biāo)或件按鍵而已。
舉個(gè)例子,如果你編寫(xiě)的是會(huì)正式使用的腳本,會(huì)被其他人使用以及維護(hù),那么,在文件開(kāi)頭寫(xiě)上包含有一些基本信息的文件頭是一個(gè)不錯(cuò)的主意,這些信息 包括腳本名稱,用途,描述,注釋,作者信息,版權(quán)以及其他任何可能對(duì)下一個(gè)維護(hù)這個(gè)腳本的用戶有用的信息。Bash Support讓你能夠輕松做到這點(diǎn),通過(guò)Bash -> Comments -> File Header,然后gVim就會(huì)在你的腳本中插入如下文件頭:
#!/bin/bash
#===============================================================================
#
# FILE: test.sh
#
# USAGE: ./test.sh
#
# DESCRIPTION:
#
# OPTIONS: —
# REQUIREMENTS: —
# BUGS: —
# NOTES: —
# AUTHOR: Joe Brockmeier, jzb@zonker.net
# COMPANY: Dissociated Press
# VERSION: 1.0
# CREATED: 05/25/2007 10:31:01 PM MDT
# REVISION: —
#===============================================================================
你需要填充一些具體的信息,不過(guò)Bash Support可以自動(dòng)從你的~/.vimrc中提取作者,公司名以及郵件地址等信息,并自動(dòng)填充他們,然后自動(dòng)創(chuàng)建日期。更智能的是,如果你用Vim或 者gVim打開(kāi)后綴名是.sh的新文件,Bash Support可以自動(dòng)加入文件頭。
另外,在編寫(xiě)你的腳本時(shí),你可能需要為一些函數(shù)增加注釋塊,通過(guò)Bash -> Comment -> Function來(lái)插入如下的文本塊:
#=== FUNCTION ================================================================
# NAME:
# DESCRIPTION:
# PARAMETERS:
# RETURNS:
#===============================================================================
然后你只需要填充相關(guān)的信息,就可以開(kāi)始編寫(xiě)程序了。注釋菜單可以讓你插入其他不同風(fēng)格的注釋,插入當(dāng)前日期和時(shí)間,以及將選中的代碼轉(zhuǎn)換成注釋,反之亦然。
程序語(yǔ)句和片段
舉個(gè)具體點(diǎn)的例子,比如你正在編寫(xiě)腳本,當(dāng)你希望往腳本里面添加一個(gè)if-else語(yǔ)句的時(shí)候,你既可以使用傳統(tǒng)的方式,手工輸入,又可以使用 Bash Support的預(yù)先準(zhǔn)備好的語(yǔ)句。打開(kāi)Bash -> Statements菜單,你可以看到一長(zhǎng)串預(yù)先定制好的語(yǔ)句列表,包括while之類的語(yǔ)句。通過(guò)選擇,就可以方便地把他們?cè)黾拥侥_本中。例如,此時(shí)你 選擇while,那么腳本中就會(huì)自動(dòng)添加:
while _; do
done
同時(shí),光標(biāo)會(huì)自動(dòng)處于下劃線(_)上面,此時(shí),你所需要做的就是增加測(cè)試語(yǔ)句以及你真正希望在while循環(huán)中執(zhí)行的代碼。這也是一個(gè)IDE能夠幫你做到的一切了。
Bash Support還有更加強(qiáng)大的一面。假設(shè)你的任務(wù)是編寫(xiě)大量的腳本,而你有某個(gè)函數(shù)或者代碼片段是會(huì)經(jīng)常在編寫(xiě)過(guò)程中重復(fù)使用的,Bash Support就提供了自定義功能,允許你首先高亮選中代碼片段或者函數(shù),然后通過(guò)Bash -> Statements -> write code snippet菜單保存。一旦需要提取他們時(shí),通過(guò)Bash -> Statements -> read code snippet菜單就可以提取。除了上述這個(gè)辦法,你還可以把希望保存的代碼片段保存到一個(gè)文本文件中,然后將該文件放置到~/.vim/bash- support/codesnippets目錄下即可。這個(gè)功能應(yīng)該說(shuō)給以編寫(xiě)腳本為職業(yè)的朋友提供了很大的幫助。
執(zhí)行和調(diào)試腳本
一旦你的腳本編寫(xiě)完畢,就到了測(cè)試和調(diào)試的時(shí)候了。通常來(lái)講,你需要退出Vim,將腳本文件設(shè)置成可執(zhí)行屬性,然后運(yùn)行,看看結(jié)果,看看有沒(méi)有什么 bug,之后再回到Vim里去做針對(duì)性編輯。你不覺(jué)得這個(gè)流程很枯燥繁瑣么?ok,現(xiàn)在,Bash Support就能夠幫你在Vim環(huán)境下測(cè)試。
當(dāng)你想讓腳本有可執(zhí)行權(quán)限時(shí),只需要選擇Bash -> Run -> make script executable,然后按下Ctrl-F9來(lái)保存屬性并運(yùn)行。另外,還可以通過(guò)Bash -> Run -> save來(lái)保存,然后通過(guò)run運(yùn)行。Bash Support還允許你從Vim中調(diào)用bash調(diào)試器(bashdb) 。在Ubuntu上似乎沒(méi)有默認(rèn)安裝,所以你還需要通過(guò)apt-get來(lái)安裝。安裝完畢后,通過(guò)Bash -> Run -> start debugger或者直接按F9按鍵,就能調(diào)試腳本了。
Bash Support還擁有很多其他的用于幫助你在Vim中運(yùn)行和測(cè)試腳本的函數(shù),例如一個(gè)很有用的特性,語(yǔ)法檢查。當(dāng)你按下Alt-F9時(shí),Bash Support就會(huì)自動(dòng)幫你檢查語(yǔ)法,如果沒(méi)有語(yǔ)法錯(cuò)誤,就會(huì)告訴你通過(guò),一旦有錯(cuò)誤,在Vim的屏幕底部會(huì)自動(dòng)出現(xiàn)一個(gè)小窗口,里面是語(yǔ)法錯(cuò)誤的清單信 息,在這個(gè)窗口中高亮選擇錯(cuò)誤并按下回車鍵,就能跳轉(zhuǎn)到相應(yīng)錯(cuò)誤出現(xiàn)的語(yǔ)句行上。具體過(guò)程有點(diǎn)類似于Vim下用make調(diào)試軟件語(yǔ)言,呵呵。
參考書(shū)籍一邊去
我想很多人都遇到過(guò)需要往腳本里面增加某個(gè)正則表達(dá)式或者別的類似測(cè)試語(yǔ)句的時(shí)候,而你一定經(jīng)常不記得這些該死的語(yǔ)法。難道你對(duì)這種情況還沒(méi)有受夠 么?不過(guò)當(dāng)你開(kāi)始使用Bash Support時(shí),這些都將不是問(wèn)題。因?yàn)槟銓碛心闼M麚碛械乃姓Z(yǔ)法規(guī)則或者測(cè)試菜單。例如,如果你需要確認(rèn)一下一個(gè)文件是否存在,并且UID是否 正確,那么只需要通過(guò)Bash -> Tests -> file exists and is owned by the effective UID即可實(shí)現(xiàn),插件能自動(dòng)在光標(biāo)后插入合適的測(cè)試語(yǔ)句,你接下來(lái)的工作就是寫(xiě)出文件名稱即可。
如果是想盡快構(gòu)建一個(gè)正則表達(dá)式,去Bash菜單下,選擇Regex,然后從列表中選擇合適的表達(dá)式。這對(duì)于經(jīng)常忘記如何表示諸如“1或者0”或者其他正則表達(dá)式的朋友來(lái)說(shuō)可以算是非常有用了。Bash Support還包括諸如環(huán)境變量,shell選項(xiàng)以及更多的菜單。
熱鍵支持
Vim用戶可以利用很多熱鍵來(lái)使用Bash Support的特性。雖然并不是像點(diǎn)擊菜單那么簡(jiǎn)單,但是這些熱鍵還是擁有比較容易記憶的邏輯方式。比如,所有注釋函數(shù)都可以通過(guò)\c來(lái)訪問(wèn),因此,如 果你希望插入一個(gè)文件頭,就可以使用\ch,而如果你希望插入日期,則可以使用\cd,如果是一行注釋,則是由\cl執(zhí)行。同理,程序語(yǔ)句是通過(guò)\a獲得 的。\ac表示case語(yǔ)句,\aie表示“if then else”語(yǔ)句,\af則是for語(yǔ)句,等等。說(shuō)明一下,在線幫助在這方面的內(nèi)容是錯(cuò)誤的,因?yàn)槔锩嬲f(shuō)語(yǔ)句熱鍵是\s,因此使用時(shí)千萬(wàn)注意這一點(diǎn)。
如果用戶希望執(zhí)行命令,則\r可以滿足你的要求。例如,想保存并執(zhí)行腳本,可以用\rr,希望讓腳本增加可執(zhí)行屬性,可以使用\re,想進(jìn)行調(diào)試, \rd就能派上用場(chǎng)。這里,我們不會(huì)舉出所有的熱鍵,你可以通過(guò)輸入:help bashsupport-usage-vim來(lái)獲得詳細(xì)的幫助信息,這點(diǎn)估計(jì)Vim用戶都知道。
總結(jié)
事實(shí)上,我們?cè)谶@里只是介紹了Bash Support一小部分的功能。以后,當(dāng)你需要編寫(xiě)大量腳本時(shí),可以試一試安裝了Bash Support插件的Vim,它確實(shí)為腳本的編寫(xiě)提供了極大的幫助。

 
                         
                                
 
                                








 
                        
