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