[Unix] vi基本操作方法
一 vi的操作模式
vi提供兩種操作模式:輸入模式(insert mode)和指令模式(command mode)。在輸入模式下,用戶可輸入文本資料。在指令模式下,可進(jìn)行刪除、修改等各種編輯動作。


二 進(jìn)入vi

直接鍵入“vi + 所要編輯的文件名”,即可對指定的文件進(jìn)行編輯。
如果指定的文件為新文件,則提示:“New file”,否則顯示該文件的當(dāng)前內(nèi)容。

以只讀方式打開文件filename
三 指令模式
3.1 進(jìn)入輸入模式
?A?????在當(dāng)前行之末輸入
??i?????在當(dāng)前游標(biāo)之前輸入
??I?????在當(dāng)前行之首輸入
?o?????在當(dāng)前行之下新增一行,并在新增行輸入
?O?????在當(dāng)前行之上新增一行,并在新增行輸入

3.2 游標(biāo)移動
?l?向右移動一個字元
?j?向下移動一個字元
?k?向上移動一個字元
?b?左移一個單詞,至詞首
?w?右移一個單詞,至詞尾
?0 ?移到當(dāng)前行行首
?$?移到當(dāng)前行行尾
?+?移至下一行的行首
?-?移至上一行的行首
?H?移至視窗的第一行
?M?移至視窗的中間一行
?L?移至視窗的最后一行
?G?移至該文件的最后一行
?nG?移至該文檔的第n行
?n+?下移n行
?n-?上移n行
3.3 視窗移動
??<Ctrl>?+?b?視窗上卷一頁
? ?<Ctrl>?+?d?視窗下卷半頁

???<Ctrl>?+?e?視窗下卷一行
???<Ctrl>?+?y?視窗上卷一行
3.4 刪除操作
?X?刪除游標(biāo)前一字元
?dw?從游標(biāo)當(dāng)前位置開始向后刪除一個單詞
?db?從游標(biāo)當(dāng)前位置開始向前刪除一個單詞
?d0?從行首刪除至當(dāng)前游標(biāo)位置
?d$?從游標(biāo)當(dāng)前位置刪除至行尾
?dd?刪除游標(biāo)所在行
?D?同d$
3.5 修改操作
?S?修改整行內(nèi)容,修改完成后按Esc鍵結(jié)束
?r?替換當(dāng)前游標(biāo)所在字元
?R?進(jìn)入替換狀態(tài),直至按Esc鍵結(jié)束
?cw?修改一個單詞(從游標(biāo)位置至詞尾)
?cb?修改一個單詞(從詞首至游標(biāo)位置)
?cc?修改整行內(nèi)容,完成后按Esc鍵結(jié)束,同S
?c0?修改行首至游標(biāo)位置的內(nèi)容
?c$?修改游標(biāo)位置至行尾的內(nèi)容
?~?游標(biāo)所在字元大小寫切換
3.6 指令重復(fù)
在指令模式中,可在指令前面加入一個數(shù)字n,則該指令會重復(fù)執(zhí)行n次。常用的重復(fù)操作有:
?ndd?刪除n行
?ns?修改n個字元
3.7 取消前一動作(Undo)
3.8 查找字符串
??字符串?從當(dāng)前游標(biāo)向前查找該字符串
?n?從當(dāng)前游標(biāo)向后查找下一個字符串
?N?從當(dāng)前游標(biāo)向前查找下一個字符串
3.9 查看編輯狀況
四 保存與退出
?:wq?保存并退出
?:x?同:wq
?:q?退出,如果當(dāng)前文件沒有保存,禁止退出
?:q!?不保存退出
?:w?file1?將內(nèi)容保存至文件file1中,注意:此時編輯的仍為原文件
?:w!?file1?將內(nèi)容覆蓋保存至文件file1中,如文件file1存在,:w?file1將禁止執(zhí)行
?
五 環(huán)境設(shè)置
?:set?all?顯示所有的環(huán)境設(shè)置選項(xiàng)
?:set?nu?顯示行號
?:set?nonu?不顯示行號
?:set?ts = n?設(shè)置Tab鍵的長度為n
六 執(zhí)行指令
以下用具體的數(shù)字為例進(jìn)行介紹,數(shù)字表示行數(shù),游標(biāo)所在行可用“.”代替,文件最后一行可用“$”代替。
?:10d?刪除第10行的內(nèi)容
?:%d?刪除全部內(nèi)容
?: 10 , 20co30?將第10行至第20行的內(nèi)容復(fù)制到第30行之后
?: 10 , 20mo30?將第10行至第20行的內(nèi)容移動到第30行之后
?: 1 , $s/old/new?將第1行至最后一行中的old替換成new
?: 1 , $s/^/new?將第1行至最后一行的內(nèi)容前面插入new
?: 10 ?將游標(biāo)移至第10行
七 重復(fù)指令
八 切換到shell狀態(tài)
?