一 vi的操作模式
vi提供兩種操作模式:輸入模式(insert mode)和指令模式(command mode)。在輸入模式下,使用者可輸入文本資料。在指令模式下,可進行刪除、修改等各種編輯動作。
在輸入模式下,按
Esc鍵切換到指令模式下。
在指令模式下,按
輸入指令(i、a、o等)進入輸入模式。
二 進入vi
$ vi filename
直接鍵入“vi + 所要編輯的檔案名稱”,即可對指定的檔案進行編輯。
如果指定的檔案為新檔案,則提示:“New file”,否則顯示該檔案的當前內容。
$ view filename
以唯讀方式開啟檔案filename
三 指令模式
3.1 進入輸入模式
a 在當前遊標之後輸入
A 在當前行之末輸入
i 在當前遊標之前輸入
I 在當前行之首輸入
o 在當前行之下新增一行,並在新增行輸入
O 在當前行之上新增一行,並在新增行輸入
輸入結束後,按Esc鍵退出輸入模式。
3.2 遊標移動
h 向左移動一個字元
l 向右移動一個字元
j 向下移動一個字元
k 向上移動一個字元
b 左移一個單詞,至詞首
w 右移一個單詞,至詞尾
0 移到當前行行首
$ 移到當前行行尾
+ 移至下一行的行首
- 移至上一行的行首
H 移至視窗的第一行
M 移至視窗的中間一行
L 移至視窗的最後一行
G 移至該檔案的最後一行
nG 移至該文檔的第n行
n+ 下移n行
n- 上移n行
3.3 視窗移動
<Ctrl> + f 視窗下卷一頁
<Ctrl> + b 視窗上卷一頁
<Ctrl> + d 視窗下卷半頁
<Ctrl> + u 視窗上卷半頁
<Ctrl> + e 視窗下卷一行
<Ctrl> + y 視窗上卷一行
3.4 刪除操作
x 刪除遊標所在字元
X 刪除遊標前一字元
dw 從遊標當前位置開始向後刪除一個單詞
db 從遊標當前位置開始向前刪除一個單詞
d0 從行首刪除至當前遊標位置
d$ 從遊標當前位置刪除至行尾
dd 刪除遊標所在行
D 同d$
3.5 修改操作
s 修改遊標所在字元,修改完成後按Esc鍵結束
S 修改整行內容,修改完成後按Esc鍵結束
r 替換當前遊標所在字元
R 進入替換狀態,直至按Esc鍵結束
cw 修改一個單詞(從遊標位置至詞尾)
cb 修改一個單詞(從詞首至遊標位置)
cc 修改整行內容,完成後按Esc鍵結束,同S
c0 修改行首至遊標位置的內容
c$ 修改遊標位置至行尾的內容
~ 遊標所在字元大小寫切換
3.6 指令重複
在指令模式中,可在指令前面加入一個數字n,則該指令會重複執行n次。常用的重複操作有:
nx 刪除n個字元
ndd 刪除n行
ns 修改n個字元
3.7 取消前一動作(Undo)
u 撤消上一指令的結果
3.8 尋找字串
/字串 從當前遊標向後尋找該字串
?字串 從當前遊標向前尋找該字串
n 從當前遊標向後尋找下一個字串
N 從當前遊標向前尋找下一個字串
3.9 查看編輯狀況
<Ctrl> + g 顯示正在編輯的檔案名稱、當前遊標所在行數、檔案總行數、檔案是否被修改
四 儲存與退出
:w 儲存,但不退出
:wq 儲存並退出
:x 同:wq
:q 退出,如果當前檔案沒有儲存,禁止退出
:q! 不儲存退出
:w file1 將內容儲存至檔案file1中,注意:此時編輯的仍為原檔案
:w! file1 將內容覆蓋儲存至檔案file1中,如檔案file1存在,:w file1將禁止執行
五 環境設定
:set 顯示已設定的環境狀況
:set all 顯示所有的環境設定選項
:set nu 顯示行號
:set nonu 不顯示行號
:set ts = n 設定Tab鍵的長度為n
六 執行指令
以下用具體的數字為例進行介紹,數字表示行數,遊標所在行可用“.”代替,檔案最後一行可用“$”代替。
: 10 , 20d 刪除第10行至第20行的內容
:10d 刪除第10行的內容
:%d 刪除全部內容
: 10 , 20co30 將第10行至第20行的內容複寫到第30行之後
: 10 , 20mo30 將第10行至第20行的內容移動到第30行之後
: 1 , $s/old/new 將第1行至最後一行中的old替換成new
: 1 , $s/^/new 將第1行至最後一行的內容前面插入new
: 10 將遊標移至第10行
七 重複指令
. 重複上一條指令
八 切換到shell狀態
:sh 切換到shell狀態,exit返回(原文地址:
http://www.cnblogs.com/endsock/archive/2010/12/29/1921127.html)