⒈ 進入vi:
要使用vi,應先注冊進入一用戶,然后如下所示進行操作:
$ vi <filename> <Enter> ($ 為提示符)
⒉ 退出vi:
(1) "Esc" 退出插入方式進入命令方式
:w <Enter> 將文件存盤
:q <Enter> 退出vi
(2) "Esc" 退出插入方式進入命令方式
:q! <Enter> 無條件退出vi,修改內容不存盤
(3) "Esc" 退出插入方式進入命令方式
:x <Enter> 將文件存盤并退出vi
⒊ 臨時退出vi:
(1) "Esc" 退出插入方式進入命令方式
:!command <Enter> 執(zhí)行命令command
命令執(zhí)行完成后,按<Enter>返回編輯畫面。
(2) "Esc" 退出插入方式進入命令方式
:!sh <Enter> 進入子shell
進入子shell后出現(xiàn)$提示符,按Ctrl_d退出子shell,再按<Enter>返回編輯畫面。
(3) "Esc" 退出插入方式進入命令方式
!!command <Enter> 執(zhí)行命令command的結果代替當前行
【注】 前面沒有“∶”,當前行原來的內容消失,代之以命令執(zhí)行的結果。
⒋ 移動光標及屏幕命令:
(1) 移動一個字符的位置
--------------------------------------------------------
h 左 也可一次移動n個字符,如5h,就向左
l 右 移動5個字符的位置。
--------------------------------------------------------
(2) 移動一行的位置
--------------------------------------------------------
j 下 也可一次移動n個字符,如5j,就向下
k 上 移動5行。
nG 移到第n行
:n <Enter> 移到第n行
--------------------------------------------------------
(3) 移動一個字的位置
--------------------------------------------------------
W或w 右移一字 (光標 ①小寫字母鍵把標點及非字母符號
定位在字首) (例如,!@#$%^&* ()_-=+等)也看作
E或e 右移一字 (光標 一個詞;
定位在字尾) ②大寫字母以空格為字的分界符;
B或b 左移一字 (光標 ③前面加數(shù)字n將移動n個字的位置;
定位在字首) ④從行尾右移則移向下一行的行首,
從行首左移則移向上一行的行尾。
--------------------------------------------------------
(4) 移動一句的位置
--------------------------------------------------------
( 移至句首 以.?!后加兩個空格或換行符的字
) 移至句尾 符序列定義為句子。
n ( 執(zhí)行n次 (
n) 執(zhí)行n次)
--------------------------------------------------------
(5) 屏幕滾動
--------------------------------------------------------
Ctrl_u 上滾半屏 大寫字母與小寫字母等價
Ctrl_d 下滾半屏
Ctrl_f 下滾一屏
Ctrl_b 上滾一屏
--------------------------------------------------------
(6) 其他常用命令
--------------------------------------------------------
0 行首 ①這些命令都在命令方式下
^ 移到行首第一個可 使用;
見字符處 ②H、L、G、M都必須是大寫
$ 行尾 字母;
Ctrl_G 顯示當前行行號 ③z是小寫字母,且按回車才
Ctrl_L 屏幕重顯 有效。
H 屏幕左上角
L 屏幕正文最低行
G 文件最末行
M 屏幕中間行
z<Enter> 當前行翻到屏幕頂
nz<Enter> 第n行翻到屏幕頂
--------------------------------------------------------
⒌ 插入命令
--------------------------------------------------------
I 當前行的行首前插入 ①按"Esc"就退出插入方式
A 當前行的行尾附加 ②大小寫字母作用不同
i 光標前插入
a 光標后插入
O 當前行前開新行
o 當前行后開新行
>> 當前行整個右移一個制表符的位置
<< 當前行整個左移一個制表符的位置
--------------------------------------------------------
⒍ 刪除命令
--------------------------------------------------------
dd 刪除當前行,并將刪 ①在命令dd,dw,x,X前加數(shù)
除的內容存入緩沖區(qū)
dw 刪除一個詞 (光標到詞 字n等于命令執(zhí)行n次
尾部分) ②Ctrl_u 要在插入方式下
x 刪除光標所在字符, 使用,按下ESC鍵后生效
并將刪除的內容存入緩
沖區(qū)
X 刪除光標之前字符,
并將刪除的內容存入緩
沖區(qū)
D,d$ 刪除光標至行尾的內容
d0 刪除光標至行首的內容
d^ 刪除光標至行首第一個
可見字符的內容
Ctrl_u 刪除剛插入的所有內容
--------------------------------------------------------
要刪除剛插入的內容,應在沒按ESC鍵(插入狀態(tài)下)時按下
Ctrl_u鍵。光標回到插入的開始處,原有插入的正文仍顯示在屏
幕上,它將被鍵入的新內容所代替。當按下ESC鍵后,原插入
的正文將被刪除。下面是幾個刪除的例子:
3x 刪除光標后三個字符
3X 刪除光標前三個字符
2dd 刪除當前行和下面的一行共兩行
:15,20d 刪除第15到20行
:.,$d 刪除當前行到最后一行。"."代表當前行,$代
表最后一行。
:.,+3d 刪除當前行和下面的三行
:.,-3d 刪除當前行和上面的三行
⒎ 恢復
按下ESC鍵 進入命令方式
按下u 恢復到上一命令以前的狀態(tài)
再按下u 恢復到上一個u以前的狀態(tài)
⒏ 重復一條命令
任何一條編輯命令執(zhí)行一次后,如果還需要再執(zhí)行同樣的命令,應該用重復命令“.”
來節(jié)省時間,例如在一行中連續(xù)插入三個字符串abcdef,那么可以用如下的方法:
鍵入i 進入插入方式
鍵入abcdef 插入第一個字符串
按下ESC鍵 進入命令方式
光標移到正確
的位置,連續(xù)
按兩個園點. 重復插入兩個字符串abcdef
⒐ 搜索命令
(1)模式匹配特殊字
--------------------------------------------------------
^ 一行的開始
$ 一行的末尾,或文件的最后一行
. 任一字符 (除換行符外)
[ ] 字符集內的任一字符,如[abc]代表a,b,c中的任一
字符,[1-5]代表1,2,3,4,5中的任一個。
[^ ] 字符集外的任一字符,如[^abc]代表除a,b,c外的任
一字符
\ 轉義,去掉特殊字符的特殊意義,如\$僅代表$字
符本身
--------------------------------------------------------
(2)常用搜索命令
--------------------------------------------------------
/串 <Enter> 向下搜索
串 <Enter> 向上搜索
n 繼續(xù)搜索
N 繼續(xù)向相反方向搜索
--------------------------------------------------------
搜索命令必須在命令方式下使用。按下"/"或"?"時它會自動出現(xiàn)在狀態(tài)行上,鍵入要搜
索的字符串并按回車,光標會移動到該字符串所在行,并定位在該字符串的第一個字符上。
下面的格式把光標移到字符上一行的行首:
/字符串/- <Enter>
下面是一些例子:
/abc/-2 <Enter> 光標移到含abc的行的上兩行的行首
/abc/+2 <Enter> 光標移到含abc的行的下兩行的行首
123mn <Enter> 向上搜索串123mn
n 繼續(xù)執(zhí)行前面的搜索命令
/^this<Enter> 搜索開頭為this的行
/p\.r\.c<Enter> 向下搜索字符串p.r.c,因為"."是特殊字符,所
以前面要加反斜線"\"轉義。
⒑ 作標記
在光標所在處作一標記,以備需要時及時查找到該處,這也是一種重要的檢索方式,完
成該功能的命令是m。
標記命令
--------------------------------------------------------
m標記 光標所在處作標記 ①標記是任選的小寫字母
`標記 移到標記位置 ②注意左撇 ' 與右撇 `
'標記 移到有標記的行的開頭 的不同
--------------------------------------------------------
例如有一正文前三行內容如下:
1 This is Line one
2
3 This is Line two
把光標移到第一行的L處,鍵入 mb,作標記b (不要回車),以后某一時候要刪除從當前
光標處到標記處,只要鍵入: d`b 即可。
如果再把光標移到第三行的"n"處,再作一標記s,只要鍵入: ms即可。如果光標在別的
地方,什么時候想把光標移到第三行的"n"處,只要鍵入: `s 即可。如果僅是想把光標移到
第三行,只要鍵入: 's 即可。
⒒ 搜索并代替
對文件進行更復雜的修改,最好用搜索替代合在一起的命令。這類命令往往是一些簡單
命令的組合。
搜索替代命令
--------------------------------------------------------
g 全局搜索 用于開頭,代表搜索所有行,用于末
尾,代表搜索整行。
s 替代命令 如果出現(xiàn)在命令行中,應與其他命令
用"/"隔開。
p 顯示命令
c 提問命令 對要替代的內容用符號"^"提示,若按
下"y"才發(fā)生替換,否則不替換。
v 不匹配命令
--------------------------------------------------------
搜索替代命令是在ex轉換方式下使用的,即按下"ESC"鍵和":"之后才能使用。鍵入的命
令出現(xiàn)在狀態(tài)行上,按回車執(zhí)行。被搜索替代的字符串兩邊要加斜線"/", 如果不使用全局
命令"g",則只對第一個找到的字符串起作用。命令前面也可以加地址范圍的選擇。
下面是使用命令的例子:
:s/abc/xyz/<Enter> 用xyz替換當前行找到的第一個abc
:s/ab/x/g<Enter> 用x替換當前行所有的ab
:g/22/s//456/<Enter> 每行找到的第一個字符串"22"都用
字符串"456"替換
:g/22/s//456/g<Enter> 全文找到的所有字符串"22"都用串
"456"替換,第一個"g"代表"每行",
第二個"g"代表一行中的全部。
:g/this/p<Enter> 顯示所有含"this"的行
:v/this/p<Enter> 顯示所有不含"this"的行
:g!/this/p<Enter> 顯示所有不含"this"的行
:g/^/s//abc/g 在文件每一行開頭插入abc,"^"代
表行首。
:g/this/s//THIS/gp<Enter> 全文所有"this"都用"THIS"替代,
并且顯示發(fā)生替代的行。
:3,7s/this/THIS/<Enter> 第3行到第7行中第一個"this"都用
"THIS"替代。
:3,7s/this/THIS/g<Enter> 第3行到第7行中所有的"this"都用
"THIS"替代。
:1,$s/this/THIS/g<Enter> 第一行到最后一行 (全文)中所有的
"this"都用"THIS"替代。
⒓ 替代
在命令方式下執(zhí)行替代命令,按"ESC"結束。
--------------------------------------------------------
r 替代一個字符
R 替代可以到行尾,超過行尾的部分被附加
ns 替代n個字符,超過數(shù)目的輸入被插入
nS 刪除n行,并處于插入狀態(tài)
cw 替代一個字
cc 刪除當前行,并進入插入狀態(tài)
--------------------------------------------------------
⒔ 其他常用命令
--------------------------------------------------------
:r 文件名 將文件名所指文件讀入,并放在當前行下面
nyw 將光標后的n個字放入緩沖區(qū)
"anyw 將光標后的n個字放入a緩沖區(qū)
"Anyw 將光標后的n個字附加到a緩沖區(qū)
nyy 將當前行及下面的行共n行放入緩沖區(qū)
"anyy 將當前行及下面的行共n行放入a緩沖區(qū),a可用其
他小寫字母代替
"Anyy 將當前行及下面的行共n行附加到a緩沖區(qū),A可用
其他大寫字母代替
p 將緩沖區(qū)的內容放入當前行下面或光標后,這取決
于緩沖區(qū)中是否有完整的行。
P 將緩沖區(qū)的內容放入當前行上面或光標前,這取決
于緩沖區(qū)中是否有完整的行。
"ap 將命令"ayy保存的內容放入當前行下面,a可用其
他小寫字母代替
m 移動正文
t 拷貝正文
w 寫文件
--------------------------------------------------------
下面是一些例子:
:r fn 將文件fn讀入,并放在當前行下面
2yy 將當前行及下一行放入緩沖區(qū)
p 將執(zhí)行2yy保存的兩行放到當前行下面
2,4m6 將第2到4行移到第6行下面
2,4t6 將第2到4行拷貝到第6行下面
2,4wfn 將第2到4行寫到文件fn中