也可建立vi到vim的符號連接(即實際調用的是vim)
# mv /bin/vi /bin/vi.bak
# ln -s /usr/bin/vim /bin/vi
進入vi的命令:
vi 直接進入編輯並創建新文件
vi filename 編輯文件(不存在則創建文件),並將光標置於第一行首
vi +n filename 打開文件,並將光標置於第n行首
vi + filename 打開文件,並將光標置於最後一行首
vi +/pattern filename 打開文件,並將光標置於第一個與pattern匹配的串處
vi -r filename 在上次正用vi編輯時發生系統崩潰,恢復文件
vi file1....filen 打開多個文件,依次進行編輯
vi -o aaa bbb 水平窗口打開aaa,bbb兩個文件
vi -O aaa bbb 垂直窗口打開aaa,bbb兩個文件(Ctrl+W兩次可在多個文件間切換)
多文本編輯的按鍵:
:n 編輯下一個文件
:N 編輯上一個文件
:files 列出目前這個vi的打開的所有文件
多窗口情況下的按鍵功能:
:sp [filename] 打開一個新窗口,如果有加filename,表示在新窗口打開一個新文件,否則表示兩個窗口爲同一個文件內容(同步顯示)
[ctrl]+w+j
[ctrl]+w+↓ 按鍵的按法是:先按下[ctrl]不放,再按下w後放開所有的按鍵,然後再按下j(或向下箭頭鍵),則光標可移動到下方的窗口
[ctrl]+w+k
[ctrl]+w+↑ 同上,不過光標移動到上面的窗口
[ctrl]+w+q 其實就是:q結束離開。例如,想要結束下方的窗口,那麼利用[ctrl]+w+↓移動到下方窗口後,按下:q即可離開,也可以按下[ctrl]+w+q
塊選擇的按鍵意義:
v 字符選擇,將光標經過的地方反白選擇
V 行選擇,將光標經過的行反白選擇
Ctrl + v 塊選擇,可以用長方形的方式選擇數據
y 將反白的地方複製起來
d 將反白的地方刪除
恢復命令:
u 恢復最後一個指令之前的結果
. 繼續最後一個指令的執行結果
ctrl+r 撤銷恢復
U 恢復光標該行之所有改變
移動光標命令:
h 光標左移一個字符
l 光標右移一個字符
space 光標右移一個字符
Backspace 光標左移一個字符
k或Ctrl+p 光標上移一行
j或Ctrl+n 光標下移一行
Enter 光標下移一行
w或W 光標右移一個字至字首
b或B 光標左移一個字至字首
e或E 光標右移一個字至字尾
) 光標移至句尾
( 光標移至句首
} 光標移至段落開頭
{ 光標移至段落結尾
nG 光標移至第n行首
n+ 光標下移n行
n- 光標上移n行
n$ 光標移至第n行尾
H 光標移至屏幕頂行
M 光標移至屏幕中間行
L 光標移至屏幕最後行
0 (注意是數字零)光標移至當前行首
$ 光標移至當前行尾
翻屏命令:
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部
插入文本、複製與粘貼:
i 在光標前插入
I 在當前行首插入
a 在光標後插入
A 在當前行尾插入
o 在當前行之下新開一行
O 在當前行之上新開一行
r 替換當前字符
R 替換當前字符及其後的字符,直至按ESC鍵
s 從當前光標位置處開始,以輸入的文本替代指定數目的字符
S 刪除指定數目的行,並以所輸入文本代替之
ncw或nCW 修改指定數目的字
nCC 修改指定數目的行
yy p 複製當前行,並粘貼到下一行
nyy n爲數字。複製光標所在的向下n行,例如20yy,則是複製20行
y1G 複製光標所在行到第一行的所有數據
yG 複製光標所在行到最後一行的所有數據
y0 複製光標所在的那個字符到該行行首的所有數據
y$ 複製光標所在的那個字符到該行行尾的所有數據
shift + i 在該行之首插入字符
shift + a 在該行末尾輸入字符
shift + r 改寫自光標位置及後面的所有內容
shift +o 在光標之上新增一行輸入字符
刪除命令:
ndw或ndW 刪除光標處開始及其後的n-1個字
d0 刪至行首(爲數字0)
d$ 刪至行尾
shift + d 剪切至行尾
dd 刪除一行
ndd 刪除自光標開始的n行
s 刪除光標所在之字符,並進入輸入模式直到《ESC》
S 刪除光標所在之該行資料,並進入輸入模式直到《ESC》
x或X 刪除一個字符,x刪除光標後的,而X刪除光標前的
nx n爲數字,連續向後刪除n個字符。如,要連續刪除10個字符,則:“10x”
Ctrl+u 刪除輸入方式下所輸入的文本
搜索及替換命令:
/pattern 從光標開始處向文件尾搜索pattern
?pattern 從光標開始處向文件首搜索pattern
n 在同一方向重複上一次搜索命令
N 在反方向上重複上一次搜索命令
:s/p1/p2/ 替換當前行第一個p1爲p2
:s/p1/p2/g 將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g 將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g 將文件中所有p1均用p2替換
: 1,$s/old/new/g 將文件中所有的『old』改成『new』
: 1,$s/old/new/gc 將文件中所有的『old』改成『new』,並在改前提示用戶確認
: 10,20s/^/ / 將第10行至第20行資料的最前面插入5個空格
: %s/^m//g 刪除文件中所有的^M符號
選項設置:
all 列出所有選項設置情況
term 設置終端類型
ignorance 在搜索中忽略大小寫
list 顯示製表位(Ctrl+I)和行尾標誌($)
number 顯示行號
report 顯示由面向行的命令修改過的數目
terse 顯示簡短的警告信息
warn 在轉到別的文件時若沒保存當前文件則顯示NO write信息
nomagic 允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan 禁止vi在搜索到達文件兩端時,又從另一端開始
mesg 允許vi顯示其他用戶用write寫到自己終端上的信息
最後行方式命令:
:n1,n2 co n3 將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3 將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d 將n1行到n2行之間的內容刪除
:e filename 打開文件filename進行編輯
:e! dd 強制關閉當前文件(不保存)打開新文件dd
: e! 放棄修改重新編輯
:q! 不保存文件並退出vi
:r fff 在當前位置讀入fff文件
:set nonu 不顯示行號
:set nu 顯示行號
:w 保存輸入的內容到當前文件
:w eee 另存爲eee文件
:wq 保存並退出
:x 保存當前文件並退出
:n1,n2 w eee 將文件中n1行至n2行的內容保存成eee文件
:!command 暫時離開vi到命令行模式下執行command的顯示結果。例如,“:! ls /home”即可在vi當中查看/home下面以ls輸出的文件信息
寄存器操作:
"?nyy 將當前行及其下n行的內容保存到寄存器?中,其中?爲一個字母,n爲一個數字
"?nyw 將當前行及其下n個字保存到寄存器?中,其中?爲一個字母,n爲一個數字
"?nyl 將當前行及其下n個字符保存到寄存器?中,其中?爲一個字母,n爲一個數字
"?p 取出寄存器?中的內容並將其放到光標位置處。這裏?可以是一個字母,也可以是一個數字
ndd 將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中
vim操作環境(不建議修改/etc/vimrc文件;建議手動修改~/.vimrc文件)