VI編譯基礎(chǔ)

vi命令

vi命令是UNIX操作系統(tǒng)和類UNIX操作系統(tǒng)中最通用的全屏幕純文本編輯器弦聂。Linux中的vi編輯器叫vim,它是vi的增強(qiáng)版(vi Improved),與vi編輯器完全兼容,而且實(shí)現(xiàn)了很多增強(qiáng)功能坞生。

vi編輯器支持編輯模式和命令模式,編輯模式下可以完成文本的編輯功能掷伙,命令模式下可以完成對(duì)文件的操作命令是己,要正確使用vi編輯器就必須熟練掌握著兩種模式的切換。默認(rèn)情況下炎咖,打開vi編輯器后自動(dòng)進(jìn)入命令模式赃泡。從編輯模式切換到命令模式使用“esc”鍵,從命令模式切換到編輯模式使用“A”乘盼、“a”升熊、“O”、“o”绸栅、“I”级野、“i”鍵。

vi編輯器提供了豐富的內(nèi)置命令,有些內(nèi)置命令使用鍵盤組合鍵即可完成蓖柔,有些內(nèi)置命令則需要以冒號(hào)“:”開頭輸入辰企。常用內(nèi)置命令如下:

常用內(nèi)置命令.png

編譯幷命名輸出文件為b.out

Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏况鸣;
Ctrl+f:向文件尾翻一屏牢贸;
Ctrl+b:向文件首翻一屏;
Esc:從編輯模式切換到命令模式镐捧;
ZZ:命令模式下保存當(dāng)前文件所做的修改后退出vi潜索;
:行號(hào):光標(biāo)跳轉(zhuǎn)到指定行的行首;
:$:光標(biāo)跳轉(zhuǎn)到最后一行的行首懂酱;
x或X:刪除一個(gè)字符竹习,x刪除光標(biāo)后的,而X刪除光標(biāo)前的列牺;
D:刪除從當(dāng)前光標(biāo)到光標(biāo)所在行尾的全部字符整陌;
dd:刪除光標(biāo)行正行內(nèi)容;
ndd:刪除當(dāng)前行及其后n-1行瞎领;
nyy:將當(dāng)前行及其下n行的內(nèi)容保存到寄存器泌辫?中,其中默刚?為一個(gè)字母甥郑,n為一個(gè)數(shù)字;
p:粘貼文本操作荤西,用于將緩存區(qū)的內(nèi)容粘貼到當(dāng)前光標(biāo)所在位置的下方;
P:粘貼文本操作伍俘,用于將緩存區(qū)的內(nèi)容粘貼到當(dāng)前光標(biāo)所在位置的上方邪锌;
/字符串:文本查找操作,用于從當(dāng)前光標(biāo)所在位置開始向文件尾部查找指定字符串的內(nèi)容癌瘾,查找的字符串會(huì)被加亮顯示觅丰;
?name:文本查找操作妨退,用于從當(dāng)前光標(biāo)所在位置開始向文件頭部查找指定字符串的內(nèi)容妇萄,查找的字符串會(huì)被加亮顯示;
a咬荷,bs/F/T:替換文本操作冠句,用于在第a行到第b行之間,將F字符串換成T字符串幸乒。其中懦底,“s/”表示進(jìn)行替換操作;
a:在當(dāng)前字符后添加文本罕扎;
A:在行末添加文本聚唐;
i:在當(dāng)前字符前插入文本丐重;
I:在行首插入文本;
o:在當(dāng)前行后面插入一空行杆查;
O:在當(dāng)前行前面插入一空行扮惦;
:wq:在命令模式下,執(zhí)行存盤退出操作亲桦;
:w:在命令模式下崖蜜,執(zhí)行存盤操作;
:w@臃巍:在命令模式下纳猪,執(zhí)行強(qiáng)制存盤操作;
:q:在命令模式下桃笙,執(zhí)行退出vi操作氏堤;
:q!:在命令模式下搏明,執(zhí)行強(qiáng)制退出vi操作鼠锈;
:e文件名:在命令模式下,打開并編輯指定名稱的文件星著;
:n:在命令模式下购笆,如果同時(shí)打開多個(gè)文件,則繼續(xù)編輯下一個(gè)文件虚循;
:f:在命令模式下同欠,用于顯示當(dāng)前的文件名、光標(biāo)所在行的行號(hào)以及顯示比例横缔;
:set number:在命令模式下铺遂,用于在最左端顯示行號(hào);
:set nonumber:在命令模式下茎刚,用于在最左端不顯示行號(hào)襟锐;

語(yǔ)法

vi(選項(xiàng))(參數(shù))

選項(xiàng)

+<行號(hào)>:從指定行號(hào)的行開始先是文本內(nèi)容;
-b:以二進(jìn)制模式打開文件膛锭,用于編輯二進(jìn)制文件和可執(zhí)行文件粮坞;
-c<指令>:在完成對(duì)第一個(gè)文件編輯任務(wù)后,執(zhí)行給出的指令初狰;
-d:以diff模式打開文件莫杈,當(dāng)多個(gè)文件編輯時(shí),顯示文件差異部分跷究;
-l:使用lisp模式姓迅,打開“l(fā)isp”和“showmatch”;
-m:取消寫文件功能,重設(shè)“write”選項(xiàng)丁存;
-M:關(guān)閉修改功能肩杈;
-n:不實(shí)用緩存功能;
-o<文件數(shù)目>:指定同時(shí)打開指定數(shù)目的文件解寝;
-R:以只讀方式打開文件扩然;
-s:安靜模式,不現(xiàn)實(shí)指令的任何錯(cuò)誤信息聋伦。

參數(shù)

文件列表:指定要編輯的文件列表夫偶。多個(gè)文件之間使用空格分隔開。

知識(shí)擴(kuò)展

vi編輯器有三種工作方式:命令方式觉增、輸入方式和ex轉(zhuǎn)義方式兵拢。通過相應(yīng)的命令或操作,在這三種工作方式之間可以進(jìn)行轉(zhuǎn)換逾礁。

命令方式

在Shell提示符后輸入命令vi说铃,進(jìn)入vi編輯器,并處于vi的命令方式嘹履。此時(shí)腻扇,從鍵盤上輸入的任何字符都被作為編輯命令來解釋,例如砾嫉,a(append)表示附加命令幼苛,i(insert)表示插入命令,x表示刪除字符命令等焕刮。如果輸入的字符不是vi的合法命令舶沿,則機(jī)器發(fā)出“報(bào)警聲”,光標(biāo)不移動(dòng)配并。另外暑椰,在命令方式下輸入的字符(即vi命令)并不在屏幕上顯示出來,例如荐绝,輸入i,屏幕上并無變化避消,但通過執(zhí)行i命令低滩,編輯器的工作方式卻發(fā)生變化:由命令方式變?yōu)檩斎敕绞健?/p>

輸入方式

通過輸入vi的插入命令(i)、附加命令(a)岩喷、打開命令(o)恕沫、替換命令(s)、修改命令(c)或取代命令(r)可以從命令方式進(jìn)入輸入方式纱意。在輸入方式下婶溯,從鍵盤上輸入的所有字符都被插入到正在編輯的緩沖區(qū)中,被當(dāng)做該文件的正文。進(jìn)入輸入方式后迄委,輸入的可見字符都在屏幕上顯示出來褐筛,而編輯命令不再起作用,僅作為普通字母出現(xiàn)叙身。例如渔扎,在命令方式下輸入字母i,進(jìn)到輸入方式信轿,然后再輸入i晃痴,就在屏幕上相應(yīng)光標(biāo)處添加一個(gè)字母i。

由輸入方式回到命令方式的辦法是按下Esc鍵财忽。如果已在命令方式下倘核,那么按下Esc鍵就會(huì)發(fā)出“嘟嘟”聲。為了確保用戶想執(zhí)行的vi命令是在命令方式下輸入的即彪,不妨多按幾下Esc鍵紧唱,聽到嘟聲后再輸入命令。

ex轉(zhuǎn)義方式

vi和ex編輯器的功能是相同的祖凫,二者的主要區(qū)別是用戶界面琼蚯。在vi中,命令通常是單個(gè)字母惠况,如a,x,r等遭庶。而在ex中,命令是以Enter稠屠;鍵結(jié)束的命令行峦睡。vi有一個(gè)專門的“轉(zhuǎn)義”命令,可訪問很多面向行的ex命令权埠。為使用ex轉(zhuǎn)義方式榨了,可輸入一個(gè)冒號(hào)(:)。作為ex命令提示符攘蔽,冒號(hào)出現(xiàn)在狀態(tài)行(通常在屏幕最下一行)龙屉。按下中斷鍵(通常是Del鍵),可終止正在執(zhí)行的命令满俗。多數(shù)文件管理命令都是在ex轉(zhuǎn)義方式下執(zhí)行的(例如转捕,讀取文件,把編輯緩沖區(qū)的內(nèi)容寫到文件中等)唆垃。轉(zhuǎn)義命令執(zhí)行后五芝,自動(dòng)回到命令方式。例如:

:1,$s/I/i/g 按Enter鍵

則從文件第一行至文件末尾($)將大寫I全部替換成小寫i辕万。vi編輯器的三種工作方式之間的轉(zhuǎn)換如圖所示枢步。

0f92069c-82b2-4931-916c-cc3f0670867a.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沉删,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子醉途,更是在濱河造成了極大的恐慌矾瑰,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件结蟋,死亡現(xiàn)場(chǎng)離奇詭異脯倚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嵌屎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門推正,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宝惰,你說我怎么就攤上這事植榕。” “怎么了尼夺?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵尊残,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我淤堵,道長(zhǎng)寝衫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任拐邪,我火速辦了婚禮慰毅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扎阶。我一直安慰自己汹胃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布东臀。 她就那樣靜靜地躺著着饥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惰赋。 梳的紋絲不亂的頭發(fā)上宰掉,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音赁濒,去河邊找鬼贵扰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛流部,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纹坐,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼枝冀,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼舞丛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起果漾,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤球切,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绒障,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吨凑,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年户辱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸵钝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庐镐,死狀恐怖恩商,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情必逆,我是刑警寧澤怠堪,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站名眉,受9級(jí)特大地震影響粟矿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜损拢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一陌粹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧探橱,春花似錦申屹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至胞枕,卻和暖如春杆煞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腐泻。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工决乎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人派桩。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓构诚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親铆惑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子范嘱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • vi vim1.c ESC→回到命令模式:→進(jìn)入末行模式i→進(jìn)入編輯模式 注:在末尾加嘆號(hào)表示強(qiáng)制 vi/vim三...
    yorickshan閱讀 425評(píng)論 0 0
  • vi命令是UNIX操作系統(tǒng)和類UNIX操作系統(tǒng)中最通用的全屏幕純文本編輯器送膳。Linux中的vi編輯器叫vim,它是...
    吳佳浩閱讀 598評(píng)論 0 2
  • 1.vi簡(jiǎn)介 vi是“Visual interface”的簡(jiǎn)稱,它在Linux上的地位就仿佛Edit程序在DOS上...
    冰封心動(dòng)閱讀 434評(píng)論 0 2
  • vi命令是UNIX操作系統(tǒng)和類UNIX操作系統(tǒng)中最通用的全屏幕純文本編輯器受裹。 vi編輯器支持編輯模式和命令模式碌补,編...
    快樂程序員閱讀 1,746評(píng)論 0 2
  • vi命令是UNIX操作系統(tǒng)和類UNIX操作系統(tǒng)中最通用的全屏幕純文本編輯器。Linux中的vi編輯器叫vim棉饶,它是...
    SCOR_PIO閱讀 102評(píng)論 0 0