(原文將發(fā)表于《PHPer》電子雜志四期,此為搶先預覽版,完整版請見(jiàn)雜志)
PS:Blog中看起來(lái)更清楚些,因為格式好看點(diǎn),具體的Blog地址為:
http://www.phpchina.com/13939/viewspace_9431.html Vim/Vi一直是UNIX/Linux系統上最流行的文本編輯器,從2001年接觸UNIX至今,Vim/Vi始終是我修改系統文件、編寫(xiě)簡(jiǎn)單程序的首選編輯器,是居家旅行必備之工具。如何提升它的編寫(xiě)速度,本文著(zhù)重介紹了一些使用技巧供大家參考。
值得一提的是Vim是慈善軟件(CharityWare),如有贊助或評比得獎,所得將全部救助烏干達孤兒,軟件使用是免費的,歡迎手頭有點(diǎn)閑錢(qián)的使用者捐款贊助,如果沒(méi)銀子也沒(méi)關(guān)系,至少當有評比活動(dòng)時(shí)(有獎金可拿的那種),您去投它一票也算功德無(wú)量,所謂有錢(qián)的捧個(gè)錢(qián)場(chǎng)沒(méi)錢(qián)的捧個(gè)人場(chǎng)。
了解Vim更多信息可以訪(fǎng)問(wèn)官方網(wǎng)站:
http://www.vim.org 。
應用技巧一:快速注釋
1、連續行注釋
使用Vim/Vi編輯shell腳本,在進(jìn)行調試的時(shí)候,需要進(jìn)行多行的注釋?zhuān)看味家惹袚Q到插入模式,在行首輸入注釋符“#”,再退回命令模式,非常麻煩。其實(shí)如果要注釋連續行,可在命令模式下執行,格式如下:
:起始行,終止行s/要替換字符/替換為新字符/g
如需注釋第1行到第20行,可以執行:
:1,20s/^/#/g
其中“^”表示在行首插入,“#”為要插入的字符,“g”表示執行替換時(shí)不確認,若希望每行交互詢(xún)問(wèn)是否執行,可將“g”改為“c”。
如果編輯PHP腳本,注釋要稍微麻煩一點(diǎn),如也要注釋第1行到第20行,要執行:
:1,20s/^/\/\//g
PHP的注釋符“//”要特殊處理,因為Vim/Vi替換命令格式中默認“/”為分隔符,這樣就需要使用轉義符“\”,表示“/”就要寫(xiě)成“\/”才可以,所以命令如上所示。
強烈建議各位看官使用,省時(shí)省力省鍵盤(pán)還省手指頭。
2、非連續行注釋
如果注釋非連續的多行,可以定義快捷鍵簡(jiǎn)化,格式為:
:map 快捷鍵 執行命令
如定義快捷鍵Ctrl+P為在當前行行首添加“#”注釋?zhuān)梢詧绦校?br> :map ^P I//<Esc>
“^P”為定義快捷鍵Ctrl+P,要注意的是必須同時(shí)按“Ctrl+v+p”按出此“^P”方才有效,或先按“Ctrl+v”再按“Ctrl+p”也可以;“I//<Esc>”就是此快捷鍵要觸發(fā)的動(dòng)作,“I”為在光標所在行行首插入,“//”為要輸入的字符,“<Esc>”表示退回命令模式,“<Esc>”要逐個(gè)字符鍵入,不可直接按鍵盤(pán)的“Esc”鍵。執行成功后,直接在任意需要注釋的行上按“Ctrl+P”就自動(dòng)會(huì )在行首加上“//”號了非常方便。
如果要取消此快捷鍵,只需輸入命令:
:unmap ^P
我寫(xiě)程序或文檔喜歡在末尾注釋中寫(xiě)上自己的郵箱,每次錄入十分麻煩,索性定義了一個(gè)快捷鍵,如下:
:map ^M
isam_helen@vip.163.com<Esc>
以后寫(xiě)完內容后,直接在注釋中Ctrl+M就錄入了俺的郵箱了(此處嚴重暴露了作者郵箱,主要期待各位看此文章的MM多多聯(lián)系,對燈禱告主編大人不要刪除)。
應用技巧二:亂七八糟的技巧
1、傳說(shuō)中的命令“ab”
命令“ab”,同樣可以解決上述輸入郵箱的問(wèn)題,因為我在Vim/Vi中定義了太多快捷鍵,如輸入電子郵箱的、輸入通信地址的、輸入聯(lián)系電話(huà)的、輸入求偶標準的、輸入PHPChina管理員三圍的……后來(lái)自己都記不住了。之后一天深夜電閃雷鳴,我突然發(fā)現了這條命令——“ab”,蒼天啊大地啊,我終于找到解決問(wèn)題的方法了!oh yeah!
原來(lái)輸入經(jīng)常用的信息可以如此簡(jiǎn)單,LOOK——
:ab 替代符 原始信息
示例如下:
:ab sammail
sam_helen@vip.163.com 執行之后,在輸入模式任何地方錄入“sammail”,再敲任意字母符號或者回車(chē)空格,咔嚓一下,利馬就變成“
sam_helen@vip.163.com”,那真是相當的方便?。。ㄔ徫掖颂幵俅伪┞多]箱,聲明一下,男“同志”就不要發(fā)郵件給我了,在下不好這個(gè),謝謝)
2、原來(lái)可以雙劍合一
在Vim/Vi中有兩個(gè)小技巧:
No.1 可以直接在Vim/Vi中執行UNIX/Linux命令不需退出Vim/Vi
有時(shí)編寫(xiě)一些系統腳本,需要了解系統信息,很多同學(xué)就退出Vim/Vi然后執行命令,獲得信息后再進(jìn)行編輯。其實(shí)大可不必,如想獲得/tmp目錄下內容,只需在Vim/Vi命令模式下直接執行:
:!ls /etc
查看完命令結果,直接回車(chē),就可以繼續編輯非常方便。
在Vim/Vi中執行命令,格式就是這么簡(jiǎn)單:
:!命令
No.2 可以直接將其他文件內容導入當前編輯文件中
格式:
:r 文件名
如,需要導入文件/etc/issue的內容,執行:
:r /etc/issue
兩個(gè)非常非常easy的小伎倆,就在一個(gè)我非常郁悶的下午,狂敲鍵盤(pán)時(shí)一不小心沒(méi)留神發(fā)現了這樣一個(gè)小秘密——原來(lái)它們可以結合起來(lái)用!
先舉個(gè)例子,很多程序員喜歡寫(xiě)完程序后在注釋中寫(xiě)入當前時(shí)間,我有個(gè)好辦法即省事又快速還準確,只需要在命令模式下執行:
:r !date
當前時(shí)間就自動(dòng)被導入了,任何命令的結果導入到當前編輯文件中,格式為:
:r !命令
3、助力編程的查詢(xún)功能
以前在Linux系統下寫(xiě)一些C語(yǔ)言程序,有時(shí)記性不好,忘記了語(yǔ)法格式,使用Vim/Vi編寫(xiě)時(shí)可直接查詢(xún)。如寫(xiě)程序寫(xiě)到fork時(shí),突然失憶了(失去了對這個(gè)東東的記憶),就可以直接把光標移動(dòng)到fork上,按“K”(大寫(xiě)的K),直接就會(huì )跳到Linux程序員手冊,看到fork的幫助,看完后回車(chē)繼續編寫(xiě),爽啊——
4、配置文件.vimrc
前面提到的快捷鍵、ab命令等的應用,設置后只在當前編輯文件中有效,如果想讓它永久生效需要編輯用戶(hù)宿主目錄下的.vimrc文件,如你是root用戶(hù),則編輯/root/.vimrc(此文件默認不存在)。
寫(xiě)入你常用的設置命令即可,如:
:set nu
:map ^M
isam_helen@vip.163.com<Esc>
:ab sammail
limingkillyou@163.com ……
以后就永久生效了?。ù颂幜粢粋溆绵]箱,歡迎各位MM有事沒(méi)事有空沒(méi)空多多聯(lián)絡(luò ))