|
您的位置: 首頁(yè) > 網(wǎng)站資訊 > 10個(gè)你必須掌握的超酷VI飭令技巧 |
10個(gè)你必須掌握的超酷VI飭令技巧發(fā)布日期:2017/4/17
百度權(quán)重查詢 詞庫(kù)網(wǎng) 網(wǎng)站監(jiān)控 服務(wù)器監(jiān)控 seo監(jiān)控 手機(jī)游戲 iPhone游戲 大部分Linux開(kāi)發(fā)者對(duì)vi飭令相當(dāng)熟悉,可是遺憾的是,大部分開(kāi)發(fā)者都只能掌握一些好常用的Linux vi飭令,下面介紹的10個(gè)vi飭令雖然許多不為人知,但是在現(xiàn)實(shí)應(yīng)用中又能讓你大大提高效率。 在使用vi 編輯器時(shí)—無(wú)論是初次使用的用戶,照舊有經(jīng)驗(yàn)的用戶—大多數(shù)人往往只掌握核心飭令集,這些飭令可以執(zhí)行好常用的功能:導(dǎo)航或保存文件;插入、更新、刪除或搜索數(shù)據(jù);退出但不保存修改。 但是,vi 編輯器極其壯大,特征和功能特別很是雄厚。即使在多年使用vi 之后,您仍然可能會(huì)發(fā)現(xiàn)有不知道的新飭令。本文討論的飭令就屬于不太為人所知的飭令,但是它們可以簡(jiǎn)化您目前采用的操作方法,讓您的工作體例更高效,或者讓您能夠完成原來(lái)不知道可以用vi 完成的操作。 打開(kāi)和關(guān)閉行號(hào) vi 編輯器的許多選項(xiàng)可以控制編輯會(huì)話的外觀和感覺(jué)。使用 :set 飭令修改vi 中的會(huì)話設(shè)置。按 Escape 鍵進(jìn)入飭令模式之后,可以使用 :set all 飭令顯示選項(xiàng)和設(shè)置的列表?梢栽O(shè)置的選項(xiàng)之一是 number,它的作用是打開(kāi)和關(guān)閉行號(hào)
這個(gè)vi飭令 在當(dāng)前編輯的文件中的每個(gè)記錄上顯示行號(hào)。讓vi 進(jìn)入飭令模式之后,可以輸入 :set number 并按回車(chē)來(lái)打開(kāi)行號(hào)
可以使用 :set nonumber 飭令關(guān)閉行號(hào)。還可以使用這個(gè)飭令和 :set number 飭令的簡(jiǎn)寫(xiě),即 :set nu 和 :set nonu。假如需要快速計(jì)算要用vi 函數(shù)處理的行數(shù),顯示行號(hào)會(huì)特別很是有幫助。當(dāng)行數(shù)許多,可能跨多個(gè)屏幕時(shí),行號(hào)尤其有效。另外,有時(shí)候您知道要處理的行范圍,但是需要查明要在vi 飭令中使用的初始和結(jié)束行號(hào)。假如希望每次進(jìn)入vi 會(huì)話時(shí)都顯示行號(hào),那么在主目錄中的.exrc 文件中添加 set number 行。 主動(dòng)縮進(jìn) 在用某些編程語(yǔ)言編寫(xiě)代碼時(shí),縮進(jìn)是樣式的主要部分,可以確保代碼的可讀性更好。假如需要,可以在vi 編輯器中根據(jù)編程語(yǔ)言的樣式設(shè)置主動(dòng)縮進(jìn)。使用 autoindent 打開(kāi)或關(guān)閉主動(dòng)縮進(jìn).
在此之后,假如在一行的開(kāi)頭輸入空格或制表符,那么后續(xù)的新行將會(huì)縮進(jìn)到相同的位置。在飭令模式下,輸入 :set autoindent,然后按回車(chē)打開(kāi)主動(dòng)縮進(jìn)。通過(guò)設(shè)置 shiftwidth 確定縮進(jìn)級(jí)別。例如,:set shiftwidth=4 把每級(jí)縮進(jìn)設(shè)置為四個(gè)空格。
在飭令模式下,可以使用>> 飭令讓現(xiàn)有的一行增添一級(jí)縮進(jìn),使用<< 飭令削減一級(jí)縮進(jìn)。在這些飭令前面加上一個(gè)整數(shù),即可讓多行增添或削減一級(jí)縮進(jìn)。例如,把游標(biāo)放在清單 4 中第 6 行的開(kāi)頭,進(jìn)入飭令模式之后,輸入 5>> 就會(huì)讓下面五行增添一級(jí)縮進(jìn)。
可以使用 :set noautoindent 飭令關(guān)閉主動(dòng)縮進(jìn)。還可以使用這個(gè)飭令和 autoindent 飭令的簡(jiǎn)寫(xiě),即 :set ai 和 :set noai。還可以使用 :set ai sw=4 在一個(gè)飭令中打開(kāi)縮進(jìn)并設(shè)置縮進(jìn)級(jí)別。假如希望每次啟動(dòng)vi 會(huì)話時(shí)都啟用主動(dòng)縮進(jìn)并把縮進(jìn)級(jí)別設(shè)置為四個(gè)空格,那么在主目錄中的.exrc 文件中添加 set ai sw=4 行。 在搜索時(shí)不區(qū)分大小寫(xiě) 如您所知,在 UNIX®中執(zhí)行搜索時(shí),模式匹配是區(qū)分大小寫(xiě)的。但是,假如希望vi 不區(qū)分大小寫(xiě),那么可以使用 :set ignorecase 飭令。使用 :set noignorecase 恢復(fù)區(qū)分大小寫(xiě)。還可以使用簡(jiǎn)寫(xiě)(:set ic 和 :set noic)。假如希望每次進(jìn)入vi 會(huì)話時(shí)都啟用不區(qū)分大小寫(xiě)的搜索,那么在主目錄中的.exrc 文件中添加 set ignorecase 行。 復(fù)合搜索 在vi 中,可以使用/飭令搜索字符串,這需要以字面字符串或正則表達(dá)式的形式指定要匹配的模式。例如,要想在文件中搜索單詞 echo,只需進(jìn)入飭令模式,輸入/echo,然后按回車(chē)。這個(gè)飭令會(huì)找到清單 6 所示文件的第 3 行的個(gè)單詞。
可以使用簡(jiǎn)單的正則表達(dá)式指定尋找包含某一單詞而且后面有另一個(gè)單詞的行。例如,要想尋找包含字符串 echo、后面有零個(gè)或更多字符、之后是字符串 file 的行,應(yīng)該使用/echo.*file。在清單 6 所示的文件中,這個(gè)飭令會(huì)找到第 6 行的個(gè)單詞。 但是,只有這兩個(gè)字符串出現(xiàn)在統(tǒng)一行上,這個(gè)飭令才認(rèn)為是匹配的。假如希望搜索出現(xiàn)在另一個(gè)模式或字符串后面的某個(gè)模式或字符串,不管這兩個(gè)模式或字符串是否在統(tǒng)一行上,那么可以指定由分號(hào)(;)分隔的兩個(gè)搜索飭令,從而執(zhí)行復(fù)合搜索。例如,要想搜索出現(xiàn)在字符串{file}+1 后面的字符串 echo,應(yīng)該使用/{file}+1/;/echo/。在清單 6 所示的文件中,這個(gè)飭令會(huì)找到第 10 行的個(gè)單詞。復(fù)合搜索對(duì)于尋找代碼中出現(xiàn)在另一個(gè)飭令后面的某個(gè)飭令尤其有效—例如,在設(shè)置某個(gè)變量之后調(diào)用函數(shù)的地方。 重放搜索模式 當(dāng)在文件中搜索要替代的模式時(shí),可以讓vi 把要匹配的任何模式保存在緩沖區(qū)中;然后,在執(zhí)行替代時(shí),可以用緩沖區(qū)引用號(hào)重放它們。方法是把模式放在 \(和 \)之間,這會(huì)指示vi 把模式放在編號(hào)的緩沖區(qū)(1 到 9)中。在執(zhí)行替代時(shí),可以用緩沖區(qū)引用號(hào) \1 到 \9 引用這些緩沖區(qū)。 例如,假設(shè)要在清單 7 所示的文件中搜索以單詞 Martin 開(kāi)頭的行并對(duì)每個(gè)匹配添加前綴 Mr 和后綴 Wicks,那么進(jìn)入飭令模式,輸入vi 飭令 :%s/^\(Martin\)/Mr \1 Wicks/g,然后按回車(chē)。
下面把這個(gè)飭令分解開(kāi)詮釋一下:
書(shū)簽 可以讓vi 在文件中的特定位置放上書(shū)簽。方法是按 Escape 鍵,再按 M 鍵,然后輸入另一個(gè)透露表現(xiàn)書(shū)簽引用的字母表字符。因此,好多可以有 26 個(gè)書(shū)簽,分別名為 a 到z。要返回到上一書(shū)簽,按 Escape 鍵,再按反撇號(hào)(`),然后輸入書(shū)簽引用字符。 例如,按 Escape 之后按 M 和 A 鍵,就會(huì)把當(dāng)前游標(biāo)位置保存在書(shū)簽 a 中。在編輯會(huì)話中,以后希望返回到這個(gè)游標(biāo)位置時(shí),只需按 Escape,然后輸入 `A?梢允褂秒p反撇號(hào)(“)飭令在當(dāng)前書(shū)簽和前一個(gè)書(shū)簽之間切換。 查找、更新、查找下一個(gè)、重復(fù) 在vi 編輯器中,好有效的搜索/替代特征之一是查找與某個(gè)模式匹配的字符串,更新它,然后繼續(xù)搜索下一個(gè)匹配的字符串,然后選擇是否以相同體例更新它。這與 Microsoft® Word 中的查找下一個(gè)/替代功能很相似。您可能已經(jīng)知道可以在vi 中搜索字符串模式,方法是進(jìn)入飭令模式,輸入/search_pattern(其中的 search_pattern 是字符串或正則表達(dá)式),然后按回車(chē)。這樣做就會(huì)找到與指定的模式匹配的個(gè)字符串。在此之后,可以在找到的文本上執(zhí)行任何操作。例如,按 Escape,再按 C 和 W 鍵,再輸入更多文本,就會(huì)把找到的字符串替代為另一個(gè)單詞。 要想快速地找到與模式匹配的下一個(gè)地方,應(yīng)該按 Escape,然后按 N 鍵。在找到下一個(gè)匹配時(shí),可以使用點(diǎn)號(hào)鍵(.)在這個(gè)位置重復(fù)好近的文本操作,比如前一個(gè)示例中使用的修改單詞(cw)操作。然后,可以使用這些鍵繼續(xù)尋找其他匹配(n)并選擇重復(fù)文本操作(.),操作體例與使用 Word 中的查找下一個(gè)/替代功能很相似。 切換大小寫(xiě) 在vi 中,可以切換游標(biāo)下的字母字符的大小寫(xiě),方法是按 Escape,然后按波浪號(hào)鍵(~)。這會(huì)在小寫(xiě)和大寫(xiě)之間往返切換。按著這個(gè)鍵,移動(dòng)游標(biāo)經(jīng)過(guò)行中的每個(gè)字符,就會(huì)切換碰到的每個(gè)字母字符的大小寫(xiě)?梢栽诓ɡ颂(hào)前面輸入一個(gè)數(shù)字,透露表現(xiàn)希望改變多少個(gè)字母字符的大小寫(xiě)。 篩選 您可能知道,在vi 中按 Escape,輸入 :!command(其中的 command 是要執(zhí)行的 UNIX 飭令),然后按回車(chē),就可以在 shell 中執(zhí)行飭令。例如,:!pwd 顯示編輯會(huì)話當(dāng)前的工作目錄。 但是,還可以把文件的一部分作為標(biāo)準(zhǔn)輸入發(fā)送給 UNIX 飭令,并用產(chǎn)生的輸出替代編輯緩沖區(qū)中的相同部分。例如,假如希望在vi 會(huì)話內(nèi)對(duì)清單 9 所示的整個(gè)文件進(jìn)行排序,可以按 Escape,輸入 :1,$!sort 并按回車(chē),這讓vi 把從行到文件末尾($)的所有內(nèi)容傳遞給 sort 飭令,用輸出替代指定的部分。 另外,還可以在 shell 飭令前面加上從當(dāng)前游標(biāo)位置開(kāi)始希望操作的行數(shù)。方法是按 Escape,然后輸入指定行數(shù)的數(shù)字,然后輸入兩個(gè)驚嘆號(hào)(!!),好后輸入 UNIX 飭令。 可以使用管道分隔符(|)把 UNIX 飭令連接在一路,從而在vi 會(huì)話中執(zhí)行復(fù)雜壯大的篩選。例如,假設(shè)要把當(dāng)前vi 會(huì)話的編輯緩沖區(qū)中的文件內(nèi)容替代為每行的個(gè)空格分隔的字段,按升序排序并轉(zhuǎn)換為大寫(xiě),那么在按 Escape 之后輸入:
保存部分內(nèi)容 可以保存當(dāng)前編輯的文件的部分內(nèi)容,方法是按 Escape,然后輸入 :start,endw file,其中的 start 是當(dāng)前文件中要保存的行,end 是要保存的好后一行,w透露表現(xiàn)希望寫(xiě)到另一個(gè)文件中(或者覆蓋現(xiàn)有的文件),file 是指定的部分要保存到的文件。對(duì)于好后一行,可以使用$透露表現(xiàn)文件的末尾。可以在w后面使用兩個(gè)大于號(hào)(>>)透露表現(xiàn)希望把內(nèi)容附加到文件中而不是覆蓋文件。清單 12 中的示例把第 6 到第 9 行(含)附加到文件/tmp/newfile 中。
結(jié)束語(yǔ) vi 編輯器是一個(gè)極其壯大的工具,本文提供了一些技巧和訣竅,希望能夠幫助您更高效地編輯文件。請(qǐng)記住,vi 還有更多不太為人所知的特征。祝工作興奮! |
其他相關(guān)文章 |
|
|
|
||||||||
Copyright 2012-2025 上海蒙狼網(wǎng)絡(luò)科技有限公司 www.chaojifanwen.com All Rights Reserved |