隨筆 - 100  文章 - 50  trackbacks - 0
          <2015年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          我收藏的一些文章!

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          VI是Linux/Unix下標(biāo)配的一個(gè)純字符界面的文本編輯器。由于不支持鼠標(biāo)功能,也沒(méi)有圖形界面,相關(guān)的操作都要通過(guò)鍵盤指令來(lái)完成,需要記憶大量命令。因此很多人不大喜歡它,但同時(shí)由于鍵盤的方式往往比鼠標(biāo)來(lái)得快,一旦熟練后用起來(lái)是有種非常流暢的感覺(jué)的,也有人因此而非常喜歡它。

          不管你喜歡也好,不喜歡也好,VI是Linux的標(biāo)配編輯器,很多時(shí)候你也只有這一個(gè)編輯器可用,如果要做一個(gè)Linux Coder,熟悉VI還是非常有必要的。

          PS:由于VI的命令非常多,本文主要只介紹一些基礎(chǔ)命令。并且就算是這些基礎(chǔ)命令中,也有許多是不大常用的,我就把這些命令以灰色文字顯示了,初學(xué)者可以不用太關(guān)注這些灰色命令。

           

          兩種工作模式

          前面已經(jīng)說(shuō)過(guò),由于VI沒(méi)有圖形界面,如翻頁(yè)、移動(dòng)光標(biāo)、保存、退出等操作都必須借助鍵盤來(lái)完成。另外,VI還提供了大量快捷鍵來(lái)加速操作,因此,VI統(tǒng)的編輯模式下,還引入了一種新的工作模式——命令模式。

          • 編輯模式: 在此模式下,輸入可見(jiàn)字符時(shí)和傳統(tǒng)Windows環(huán)境下輸入字符的功能相同。按Esc鍵可切換值命令模式。
          • 命令模式: 在此模式下,輸入的可見(jiàn)字符對(duì)應(yīng)的是命令。當(dāng)插入命令執(zhí)行后進(jìn)入編輯模式。

          PS:有的文章中還列舉了一種Last Line模式,這個(gè)可以算作一種特殊的命令模式,只不過(guò)命令會(huì)顯示在最后一行,并且需要敲回車才能執(zhí)行。這些命令通常以 :/?$ 等特殊字符開(kāi)頭。

          模式查詢:要判斷當(dāng)前處于那種模式,可以通過(guò)最后一行(狀態(tài)欄)來(lái)判斷:如果處于編輯模式,則顯示為如下兩種狀態(tài)。

                      

          模式間的切換:在編輯模式下,通過(guò)Esc鍵可以進(jìn)入命令模式;命令模式下,執(zhí)行某些插入命令后進(jìn)入編輯模式。如果你不知道當(dāng)前處于那種模式下,按ESC進(jìn)入命令模式按Insert進(jìn)入編輯模式

           

          啟動(dòng)VI

          VI的啟動(dòng)參數(shù)有不少,但通常的使用方式如下:vi filename

          如果參數(shù)中的文件存在,則打開(kāi)該文件,如果參數(shù)中的文件不存在,則會(huì)新建該文件(不是立即創(chuàng)建,而是在保存的時(shí)候創(chuàng)建)。

           

          插入文本

          剛進(jìn)入VI時(shí),是出于命令模式的,這是是無(wú)法輸入文本的,因此需要進(jìn)入插入模式。進(jìn)入插入模式的命令有如下幾個(gè):

          • i    從目前光標(biāo)所在之處插入文字
          • a    從目前光標(biāo)所在下一個(gè)字符插入文字
          • o    往下插入一個(gè)空行
          • O    往上插入一個(gè)空行

          輸入這幾個(gè)命令后,就進(jìn)入了編輯模式,可以通過(guò)屏幕下方最后一行看到當(dāng)前為插入狀態(tài):

              

          可以通過(guò)Insert鍵切換插入狀態(tài)和改寫狀態(tài)(和圖像界面中一樣)。

              

          另外,在命令模式下,也可以通過(guò)Insert鍵進(jìn)入編輯模式(插入狀態(tài)),不過(guò)通常還是前面介紹的四個(gè)命令來(lái)進(jìn)入編輯模式。

           

          離開(kāi)和保存文件

          在VI中,離開(kāi)和保存文件對(duì)應(yīng)的命令有這幾個(gè)(使用前記得進(jìn)入命令模式):

          • :w            保存
          • :w filename     另存為
          • :wq            保存并退出 [常用]
          • :q!            強(qiáng)制退出
          • SHIFT+zz        保存并退出,功能同:wq [常用]

           

          移動(dòng)光標(biāo)

          在VI中,移動(dòng)光標(biāo)并不是我們游戲中常用的WASD,而是hjkl,分別控制光標(biāo)左、下、上、右移一格,分別分布在右手四個(gè)指頭,新手需要一段時(shí)間來(lái)適應(yīng)。使用非常頻繁,需要熟練掌握。

          其它一些光標(biāo)控制命令如下:

          • Ctrl+B:屏幕往后移動(dòng)一頁(yè)。
          • Ctrl+F:屏幕往前移動(dòng)一頁(yè)。
          • Ctrl+U:屏幕往后移動(dòng)半頁(yè)。
          • Ctrl+D:屏幕往前移動(dòng)半頁(yè)。
          • gg:移動(dòng)文章的開(kāi)頭。
          • G:移動(dòng)到文章的最后。
          • w:光標(biāo)跳到下個(gè)word的開(kāi)頭。
          • e:光標(biāo)跳到下個(gè)word的字尾。
          • b:光標(biāo)回到上個(gè)word的開(kāi)頭。
          • $:移到光標(biāo)所在行的行尾。
          • ^:移到該行第一個(gè)非空白的字符。
          • 0:移到該行的開(kāi)頭位置。
          • #:移到該行的第#個(gè)位置,例:51、121。

          另外,還有幾個(gè)行操作相關(guān)命令集中介紹一下

          • :set nu        顯示行號(hào)
          • :set nonu        隱藏行號(hào)
          • :#            移動(dòng)到第#行,如:15
          • Ctrl+G:     在狀態(tài)欄顯示當(dāng)前進(jìn)度
          • #G:        移動(dòng)到第#行,例:15G

           

          刪除文字

          • x:刪除光標(biāo)所在位置的后面一個(gè)字符。
          • #x:例如,6x 表刪除光標(biāo)所在位置的后面6個(gè)字符。
          • X:大字的X,每按一次刪除光標(biāo)所在位置的前面一個(gè)字符。
          • #X:例如,20X 表刪除光標(biāo)所在位置的前面20個(gè)字符。
          • dd:刪除光標(biāo)所在行。
          • #dd:例如,6dd表刪除從光標(biāo)所在的該行往下數(shù)6行之文字。

           

          復(fù)制粘貼

          我個(gè)人并不是很習(xí)慣VI提供的復(fù)制粘貼,由于沒(méi)有高亮選中,用起來(lái)感覺(jué)不是很方便。平時(shí)大都是用的終端工具的復(fù)制粘貼功能,因此這里的命令我都加灰了,感興趣的可以看看。

          • yw:將光標(biāo)所在處到字尾的字符復(fù)制到緩沖區(qū)中。
          • p:將緩沖區(qū)內(nèi)的字符粘貼到光標(biāo)所在位置(指令'yw'與'p必須搭配使用)。
          • yy:復(fù)制光標(biāo)所在行。[超常用]
          • p:復(fù)制單行到您想粘貼之處。(指令'yy'與'p'必須搭配使用)
          • #yy:如:6yy表示拷貝從光標(biāo)所在的該行往下數(shù)6行之文字。[常用]
          • p: 復(fù)制多行到您想粘貼之處。(指令'#yy'與'p'必須搭配使用)
          • ayy:將復(fù)制行放入buffer a, vi提供buffer功能,可將常用的數(shù)據(jù)存在buffer
          • ap:將放在buffer a的數(shù)據(jù)粘貼。
          • b3yy:將三行數(shù)據(jù)存入buffer b。
          • b3p:將存在buffer b的資料粘貼

           

          撤銷和重做

          撤銷和重做在任何編輯器里都是非常有用的命令:

          • u:假如您誤操作一個(gè)指令,可以馬上按u,回復(fù)到上一個(gè)操作。
          • .: 重復(fù)執(zhí)行上一次的指令

           

          查找和替換

          查找和替換的語(yǔ)法筆記復(fù)雜,先簡(jiǎn)單的介紹一下查找的語(yǔ)法:

          • /pattern<Enter> :向下查找pattern匹配字符串
          • ?pattern<Enter> :向上查找pattern匹配字符串

          使用了查找命令之后,使用如下兩個(gè)鍵快速查找:

          • n:按照同一方向繼續(xù)查找
          • N:按照反方向查找

          至于替換的語(yǔ)法,限于篇幅所限,這里就不介紹了,給一個(gè)鏈接供大家參考一下:http://blog.csdn.net/lanxinju/article/details/5731843

           

          VI對(duì)編程的支持

          VI對(duì)編程還是提供了一定的支持的。例如,它是支持括號(hào)配對(duì)、語(yǔ)法高亮顯示的。

          不過(guò),由于并不支持語(yǔ)法解析功能,作為編碼工具和專業(yè)的代碼編輯器如SourceInsight、VisualStudio等比起來(lái)還是有很大差距的。個(gè)人感覺(jué)做小型項(xiàng)目和臨時(shí)修改代碼用還行,但做大型項(xiàng)目是有點(diǎn)力不從心的。

          posted on 2015-01-27 10:07 fly 閱讀(136) 評(píng)論(0)  編輯  收藏 所屬分類: Linux學(xué)習(xí)

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 信丰县| 苗栗县| 射阳县| 新龙县| 喜德县| 北辰区| 漳浦县| 云浮市| 称多县| 长春市| 焉耆| 克东县| 许昌市| 仙居县| 阿城市| 乌拉特中旗| 南陵县| 永昌县| 蓬莱市| 宁晋县| 衡东县| 苏州市| 南充市| 兴化市| 清新县| 友谊县| 宜城市| 明星| 淳安县| 施秉县| 锡林浩特市| 平果县| 精河县| 西乌| 平陆县| 福海县| 林芝县| 惠来县| 巴中市| 东平县| 彭州市|