linux vi命令使用方法
命令格式
: ranges /pat1/pat2/g
其中
: 這是Vi的命令執(zhí)行界面。
range 是命令執(zhí)行范圍的指定: 百分號(hào)(%)表示所有行
點(diǎn)(.)表示當(dāng)前行
美元($)表示最末行
例如:
10,20表示第10到20行,
.,$表示當(dāng)前行到最后一行,.
+2,$-5表示當(dāng)前行后兩行直到全文的倒數(shù)第五行
s 表示其后是一個(gè)替換命令。
pat1 這是要查找的一個(gè)正則表達(dá)式
pat2 這是希望把匹配串變成的模式的正則表達(dá)式
g 可選標(biāo)志,帶這個(gè)標(biāo)志表示替換將針對(duì)行中每個(gè)匹配的串進(jìn)行,否則則只替換行中第一個(gè)匹配串。
:/string #向下查找
:?stirng # 向上查找
1 vi編輯命令
重復(fù)執(zhí)行命令
數(shù)字N+命令 重復(fù)執(zhí)行命令N次,如刪除15行,就在命令狀態(tài)下輸入15dd
. 重復(fù)執(zhí)行上一條命令
vi命令使用的一些選項(xiàng)及含義
-c sub-command 在對(duì)指定的文件編輯前,先執(zhí)行指定的命令 sub-command .
-r filename 恢復(fù)指定的文件filename .
-R 將指定的文件以只讀的方式放入編輯器中,這樣不會(huì)保存對(duì)文件的任何修 改。
-y number 將編輯窗口的大小設(shè)為number行。
光標(biāo)移動(dòng)
命令模式下,在同一行上移動(dòng)的子命令:
h 將光標(biāo)左移一格
l 將光標(biāo)右移一格
j 將光標(biāo)下移一格
k 將光標(biāo)上移一格
w 將光標(biāo)移到下一個(gè)小字的前面
W 將光標(biāo)移到下一個(gè)大字的前面
b 將光標(biāo)移到前一個(gè)小字的前面
B 將光標(biāo)移到前一個(gè)大字的前面
e 將光標(biāo)移到下一個(gè)小字的后面
E 將光標(biāo)移到前一個(gè)大字的后面
fc 把光標(biāo)移到同一行的下一個(gè)c字符處
Fc 把光標(biāo)移到同一行的前一個(gè)c字符處
tc 把光標(biāo)移到同一行的下一個(gè)字符c的前一格
Tc 把光標(biāo)移到同一行的前一個(gè)字符c的后一格
number| 把光標(biāo)移到遞number列上
命令模式下在行間移動(dòng)的子命令:
+或Enter 把光標(biāo)移至下一行第一個(gè)非空白字符
- 把光標(biāo)移至上一行第一個(gè)非空白字符
0 把光標(biāo)移到當(dāng)前行的第一個(gè)字符處
$ 把光標(biāo)移到當(dāng)前行的最后一個(gè)字符處
H 把光標(biāo)移到屏幕最頂端一行
L 把光標(biāo)移到屏幕最底端一行
M 把光標(biāo)移到屏幕中間
:number 光標(biāo)移動(dòng)到第number行
:$ 光標(biāo)移動(dòng)到最后以行
屏幕翻滾類命令
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 將第n行滾至屏幕頂部,不指定n時(shí)將當(dāng)前行滾至屏幕頂部
插入文本
I 在光標(biāo)前
I 在當(dāng)前行首
a 光標(biāo)后
A 在當(dāng)前行尾
o 在當(dāng)前行之下新開(kāi)一行
O 在當(dāng)前行之上新開(kāi)一行
r 替換當(dāng)前字符
R 替換當(dāng)前字符及其后的字符,直至按ESC鍵
s 從當(dāng)前光標(biāo)位置處開(kāi)始,以輸入的文本替代指定數(shù)目的字符
S 刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW 修改n個(gè)單詞
nCC修改指定數(shù)目的行
刪除
x 刪除光標(biāo)所指的一個(gè)字母
X 刪除光標(biāo)左邊的一個(gè)字母
dd 刪除光標(biāo)所在的一行文字,同時(shí)本行文字會(huì)放到緩存中
d0 刪至行首
d$ 刪至行尾
D 刪除本行光標(biāo)右邊的所有文字,包括光標(biāo)位置的字母
d$ 刪除本行光標(biāo)右邊的所有文字,包括光標(biāo)位置的字母
dw 刪除光標(biāo)右邊的一個(gè)單詞
ndw 刪除n個(gè)單詞
d1G 刪除光標(biāo)所在行以上的所有行
dG 刪除光標(biāo)所在行及光標(biāo)以下所有行
復(fù)制
yy 復(fù)制本行文字到緩存中
number yy 復(fù)制number行到緩存中
粘貼
p 把緩存中的行粘貼到光標(biāo)所在的下一行,
P 把緩存中的行粘貼到光標(biāo)所在的上一行
替換
:s/pattern1/pattern2/g 把光標(biāo)當(dāng)前行的pattern1替換為pattern2
:%s/pattern1/pattern2/g 把所有行的pattern1替換為pattern2
:g/parttern1/s//parttern2 把所有行的pattern1替換為pattern2
:num1,num2 s/pattern1/pattern2/g 把num1到num2的partten1替換為partten2
被替換的文字用^表示行首,$表示行尾,如:%s/^/111/g就表示在每一行的行首插入111
文件
:r filename 把文件filename的內(nèi)容粘貼在光標(biāo)以下行
:w 保存當(dāng)前編輯的文件名
:w filename 當(dāng)filename不存在時(shí),把修改后的文件存為文件filename ,當(dāng)文件filename存在時(shí),報(bào)錯(cuò)。
!w filename 如果文件filename存在時(shí),把修改后的文件保存為文件filename
:q 退出vi ,若文件被修改,系統(tǒng)不會(huì)讓用戶使用q命令退出
q! 不保存退出
x 保存退出
wq 保存退出
在多個(gè)文件之間切換
:n 開(kāi)始編輯vi激活的文件列表中的下一個(gè)文件
:n filenames 指定將被編輯的新的文件列表
在當(dāng)前文件和另外一個(gè)文件間切換:
:e filename 使用filename激活vi(在vi中裝入另一個(gè)文件filename)
e! 重新裝入當(dāng)前文件,若當(dāng)前文件有改動(dòng),則丟棄以前的改動(dòng)
:e+filename 使用filename激活vi ,并從文件尾部開(kāi)始編輯
:e+number filename 使用filename激活vi ,并在第number行開(kāi)始編輯
:e# 開(kāi)始編輯另外一個(gè)文件
查找
/pattern 向后尋找指定的pattern ,若遇到文件尾,則從頭再開(kāi)始。
?pattern 向前尋找指定的pattern ,若遇到文件頭,則從尾再開(kāi)始。
n 在上次指定的方向上,再次執(zhí)行上次定義的查找。
N 在上次指定的方向的相反方向上,再次執(zhí)行上次定義的查找。
/pattern/+number 將光標(biāo)停在包含pattern的行后面第number行上。
/pattern/-number 將光標(biāo)停在包含pattern的行前面第number行上。
% 移到匹配的"()"或"{}"上。
選項(xiàng)設(shè)置
all 列出所有選項(xiàng)設(shè)置情況
term 設(shè)置終端類型
ignorance 在搜索中忽略大小寫(xiě)
list 顯示制表位(Ctrl+I)和行尾標(biāo)志($)
number 顯示行號(hào)
report 顯示由面向行的命令修改過(guò)的數(shù)目
terse 顯示簡(jiǎn)短的警告信息
warn 在轉(zhuǎn)到別的文件時(shí)若沒(méi)保存當(dāng)前文件則顯示NO write信息
nomagic 允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan 禁止vi在搜索到達(dá)文件兩端時(shí),又從另一端開(kāi)始
mesg 允許vi顯示其他用戶用write寫(xiě)到自己終端上的信息
在vi中使用的查找替換方法
a、利用 :s 命令可以實(shí)現(xiàn)字符串的替換。具體的用法包括:
:s/str1/str2/ 用字符串 str2 替換行中首次出現(xiàn)的字符串str1
:s/str1/str2/g 用字符串 str2 替換行中所有出現(xiàn)的字符串str1
:.,$ s/str1/str2/g 用字符串 str2 替換正文當(dāng)前行到末尾所有出現(xiàn)的字符串str1
:1,$ s/str1/str2/g 用字符串 str2 替換正文中所有出現(xiàn)的字符串str1
:g/str1/s//str2/g 功能同上從上述替換命令可以看到:g 放在命令末尾,表示對(duì)搜索字符串的每次出現(xiàn)進(jìn)行替換;不加 g,表示只對(duì)搜索字符串的首次出現(xiàn)進(jìn)行替換;g 放在命令開(kāi)頭,表示對(duì)正文中所有包含搜索字符串的行進(jìn)行替換操作。
b、在shell中使用find結(jié)合grep進(jìn)行文件的替換
# find ./ -exec grep str1 ‘{}’ \; -exec sed -i.bak s/str1/str2/g ‘{}’ \;
上面命令可以在當(dāng)前目錄下(包括子目錄)查找包含str1的文件,自動(dòng)替換成str2,并且生成源文件的bak文件。
關(guān)鍵詞:linux,vi命令
閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!
- 0
- 0
- 0
- 0
- 1
- 0