在
vi
中查找與替換
命令
查找與替換操作
/text
在文件中向前查找
text
?text
在文件中向后查找
text
n
在同一方向重復查找
N
在相反方向重復查找
ftext
在當前行向前查找
text
Ftext
在當前行向后查找
text
ttext
在當前行向前查找
text
,并將光標定位在
text
的第一個字符
Ttext
在當前行向后查找
text
,并將光標定位在
text
的第一個字符
:set ic
查找時忽略大小寫
:set noic
查找時對大小寫敏感
:
range
s/
pat1
/
pat2
/g
用
newtext
替換
oldtext
:m,ns/oldtext/newtext
在
m
行通過
n
,用
newtext
替換
oldtext
&
重復最后的
:s
命令
:g/text1/s/text2/text3
查找包含
text1
的行,用
text3
替換
text2
:g/text/command
在所有包含
text
的行運行
command
所表示的命令
:v/text/command
在所有不包含
text
的行運行
command
所表示的命令
在
vi
中復制文本
命令
復制操作
yy
將當前行的內容放入臨時緩沖區
nyy
將
n
行的內容放入臨時緩沖區
p
將臨時緩沖區中的文本放入光標后
P
將臨時緩沖區中的文本放入光標前
"(a-z)nyy
復制
n
行放入名字為圓括號內的可命名緩沖區,省略
n
表示當前行
"(a-z)ndd
刪除
n
行放入名字為圓括號內的可命名緩沖區,省略
n
表示當前行
"(a-z)p
將名字為圓括號的可命名緩沖區的內容放入當前行后
"(a-z)P
將名字為圓括號的可命名緩沖區的內容放入當前行前
在
vi
中撤消與重復
命令
撤消操作
u
撤消最后一次修改
U
撤消當前行的所有修改
.
重復最后一次修改
,
以相反的方向重復前面的
f
、
F
、
t
或
T
查找命令
;
重復前面的
f
、
F
、
t
或
T
查找命令
"np
取回最后第
n
次的刪除
(
緩沖區中存有一定次數的刪除內容,一般為
9)
n
重復前面的
/
或
?
查找命令
N
以相反方向重復前面的
/
或
?
命令
保存文本和退出
vi
命令
保存和
/
或退出操作
:w
保存文件但不退出
vi
:w file
將修改保存在
file
中但不退出
vi
:wq
或
ZZ
或
:x
保存文件并退出
vi
:q!
不保存文件,退出
vi
:e!
放棄所有修改,從上次保存文件開始再編輯
vi
中的選項
選項
作用
:set all
打印所有選項
:set nooption
關閉
option
選項
:set nu
每行前打印行號
:set showmode
顯示是輸入模式還是替換模式
:set noic
查找時忽略大小寫
:set list
顯示制表符
(^I)
和行尾符號
:set ts=8
為文本輸入設置
tab stops
:set window=n
設置文本窗口顯示
n
行
:syntax on 語法加亮
VI的狀態
選項
作用
:.=
打印當前行的行號
:=
打印文件中的行數
^g
顯示文件名、當前的行號、文件的總行數和文件位置的百分比
:l
使用字母
"l"
來顯示許多的特殊字符,如制表符和換行符
在文本中定位段落和放置標記
選項
作用
{
在第一列插入
{
來定義一個段落
[[
回到段落的開頭處
]]
向前移到下一個段落的開頭處
m(a-z)
用一個字母來標記當前位置,如用
mz
表示標記
z
'(a-z)
將光標移動到指定的標記,如用
'z
表示移動到
z
在
vi
中連接行
選項
作用
J
將下一行連接到當前行的末尾
nJ
連接后面
n
行
光標放置與屏幕調整
選項
作用
H
將光標移動到屏幕的頂行
nH
將光標移動到屏幕頂行下的第
n
行
M
將光標移動到屏幕的中間
L
將光標移動到屏幕的底行
nL
將光標移動到屏幕底行上的第
n
行
^e(ctrl+e)
將屏幕上滾一行
^y
將屏幕下滾一行
^u
將屏幕上滾半頁
^d
將屏幕下滾半頁
^b
將屏幕上滾一頁
^f
將屏幕下滾一頁
^l
重繪屏幕
z-return
將當前行置為屏幕的頂行
nz-return
將當前行下的第
n
行置為屏幕的頂行
z.
將當前行置為屏幕的中央
nz.
將當前行上的第
n
行置為屏幕的中央
z-
將當前行置為屏幕的底行
nz-
將當前行上的第
n
行置為屏幕的底行
vi
中的
shell
轉義命令
選項
作用
:!command
執行
shell
的
command
命令,如
:!ls
:!!
執行前一個
shell
命令
:r!command
讀取
command
命令的輸入并插入,如
:r!ls
會先執行
ls
,然后讀入內容
:w!command
將當前已編輯文件作為
command
命令的標準輸入并執行
command
命令,如
:w!grep all
:cd directory
將當前工作目錄更改為
directory
所表示的目錄
:sh
將啟動一個子
shell
,使用
^d(ctrl+d)
返回
vi
:so file
在
shell
程序
file
中讀入和執行命令
vi
中的宏與縮寫
(
避免使用控制鍵和符號,不要使用字符
K
、
V
、
g
、
q
、
v
、
*
、
=
和功能鍵
)
選項
作用
:map key command_seq
定義一個鍵來運行
command_seq
,如
:map e ea
,無論什么時候都可以
e
移到一個字的末尾來追加文本
:map
在狀態行顯示所有已定義的宏
:umap key
刪除該鍵的宏
:ab string1 string2
定義一個縮寫,使得當插入
string1
時,用
string2
替換
string1
。當要插入文本時,鍵入
string1
然后按
Esc
鍵,系統就插入了
string2
:ab
顯示所有縮寫
:una string
取消
string
的縮寫
在
vi
中縮進文本
選項
作用
^i(ctrl+i)
或
tab
插入文本時,插入移動的寬度,移動寬度是事先定義好的
:set ai
打開自動縮進
:set sw=n
將移動寬度設置為
n
個字符
n<<
使
n
行都向左移動一個寬度
n>>
使
n
行都向右移動一個寬度,例如
3>>
就將接下來的三行每行都向右移動一個移動寬度