vi/vim 编辑器详解
vi/vim : 強大的編輯器
?
?
?
?
?
?
進入vi的命令?
vi filename :打開或新建文件,并將光標置于第一行首?
vi +n filename :打開文件,并將光標置于第n行首?
vi + filename :打開文件,并將光標置于最后一行首?
vi +/pattern filename:打開文件,并將光標置于第一個與pattern匹配的串處?
vi -r filename :在上次正用vi編輯時發生系統崩潰,恢復filename?
vi filename....filename :打開多個文件,依次進行編輯??
移動光標類命令
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:(注意是數字零)光標移至當前行首:光標移至第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:修改指定數目的行?
刪除命令?
ndw或ndW:刪除光標處開始及其后的n-1個字?
do:刪至行首?
d:刪至行尾ndd:刪除當前行及其后n?1行x或X:刪除一個字符,x刪除光標后的,而X刪除光標前的Ctrl+u:刪除輸入方式下所輸入的文本搜索及替換命令/pattern:從光標開始處向文件尾搜索pattern?pattern:從光標開始處向文件首搜索patternn:在同一方向重復上一次搜索命令N:在反方向上重復上一次搜索命令:s/p1/p2/g:將當前行中所有p1均用p2替代:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代:g/p1/s//p2/g:將文件中所有p1均用p2替換選項設置all:列出所有選項設置情況term:設置終端類型ignorance:在搜索中忽略大小寫list:顯示制表位(Ctrl+I)和行尾標志(:刪至行尾ndd:刪除當前行及其后n?1行x或X:刪除一個字符,x刪除光標后的,而X刪除光標前的Ctrl+u:刪除輸入方式下所輸入的文本搜索及替換命令/pattern:從光標開始處向文件尾搜索pattern?pattern:從光標開始處向文件首搜索patternn:在同一方向重復上一次搜索命令N:在反方向上重復上一次搜索命令:s/p1/p2/g:將當前行中所有p1均用p2替代:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代:g/p1/s//p2/g:將文件中所有p1均用p2替換選項設置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行之間的內容刪除?
:w :保存當前文件?
:e filename:打開文件filename進行編輯?
:x:保存當前文件并退出?
:q:退出vi?
:q!:不保存文件并退出vi?
:!command:執行shell命令command?
:n1,n2 w!command:將文件中n1行至n2行的內容作為command的輸入并執行之,若不指定n1,n2,則表示將整個文件內容作為command的輸入?
:r!command:將命令command的輸出結果放到當前行?
?
寄存器操作?
"?nyy:將當前行及其下n行的內容保存到寄存器?中,其中?為一個字母,n為一個數字?
"?nyw:將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數字?
"?nyl:將當前行及其下n個字符保存到寄存器?中,其中?為一個字母,n為一個數字?
"?p:取出寄存器?中的內容并將其放到光標位置處。這里?可以是一個字母,也可以是一個數字?
ndd:將當前行及其下共n行文本刪除,并將所刪內容放到1號刪除寄存器中。?
?
?
一、插入文本?
i 在當前字符前插入文本 ?
I 在行首插入文本 ?
a 在當前字符后添加文本 ?
A 在行末添加文本 ?
o 在當前行后面插入一空行 ?
O 在當前行前面插入一空行 ?
R 以改寫方式輸入文本
二、移動光標?
j或下箭頭 向下移動一行
k或上箭頭 向上移動一行
h或左箭頭 左移一個字符
l或右箭頭 右移一個字符
w 右移一個詞
W 右移一個以空格分隔的詞?
b 左移一個詞
B 左移一個以空格分隔的詞
0 移到行首
Ctrl-F 向前翻頁
Ctrl-B 向后翻頁
nG 到第n行
G 到最后一行
三、替換文本?
$ 到行尾
( 到句子的開頭?
) 到句子的末尾
{ 到段落的開頭
} 到段落的末尾
四、刪除文本
r 替換一個字符
c 修改文本直到按下Esc健?
cw 修改下一個詞
cnw 修改接下來的n個詞
五、文本編輯?
yy 將一行文本移到缺省緩沖區中?
yn 將下一個詞移到缺省緩沖區中
ynw 將后面的n個詞移到缺省緩沖區中
p 如果缺省緩沖區中包含一行文本,則在當前 ?
行后面插入一個空行井將缺省緩沖區中的聲 ?
容粘貼到這一行中;如果缺省緩沖區中包含 ?
多個詞,把這些詞粘貼到光標的右邊. ?
P 如果缺省緩沖區中包含一行文本,則正當前 ?
行前面插入一個空行井將缺省緩沖區中的內 ?
容粘貼到這一行中;如果缺省緩沖區中包含 ?
? 多個詞,把這些詞粘貼到光標的左邊
六、保存退出?
zz 保存并退出
:w filename 寫入文件
:W 寫入文件
:x 保存(如果當前文件修改過)并退出?
:q! 不保存文件,直接退出
:q 退出vi
?
vi編輯器的啟動與退出
直接進入編輯環境?
$ vi
進入編輯環境并打開(新建)文件
$ vi myfile
退出vi編輯環境?
輸入末行命令放棄對文件的修改,并退出編輯器
:q!
保存文件?
保存對vi編輯器中已打開文件的修改
:w
另存為文件
將vi編輯器中的內容另存為指定文件名
:w myfile
退出vi編輯器的多種方法
未修改退出
沒有對vi編輯器中打開的文件進行修改,或已對修改進行了保存,直接退出vi編輯器
:q
對vi編輯器中的文件進行保存并退出vi編輯器
:wq
不保存退出
放棄對文件內容的修改,并退出vi編輯器
:q!
?
?
光標的移動和翻頁操作
h向左移動光標?
l向右移動光標?
k向上移動光標?
j向下移動光標?
翻頁Ctrl + f向前翻整頁?
Ctrl + b向后翻整頁?
Ctrl + u向前翻半頁?
Ctrl + d向后翻半頁
?
?
行內快速跳轉?
^將光標快速跳轉到本行的行首字符?
$將光標快速跳轉到本行的行尾字符?
w將光標快速跳轉到當前光標所在位置的后一個單詞的首字母?
b將光標快速跳轉到當前光標所在位置的前一個單詞的首字母?
e將光標快速跳轉到當前光標所在位置的后一個單詞的尾字母?
文件內行間快速跳轉
?
?
命令功能
:set nu 在編輯器中顯示行號?
:set nonu 取消編輯器中的行號顯示
1G跳轉到文件的首行?
G跳轉到文件的末尾行?
#G跳轉到文件中的第#行
?
?
進入輸入模式?
i在當前光標處進入插入狀態?
a在當前光標后進入插入狀態?
A將光標移動到當前行的行末,并進入插入狀態?
o在當前行的下面插入新行,光標移動到新行的行首,進入插入狀態?
O在當前行的上面插入新行,光標移動到新行的行首,進入插入狀態?
cw刪除當前光標到所在單詞尾部的字符,并進入插入狀態?
c$刪除當前光標到行尾的字符,并進入插入狀態?
c^命令刪除當前光標之前(不包括光標上的字符)到行首的字符,并進入插入狀態
?
?
輸入模式的編輯鍵操作?
方向鍵進行上下左右方向的光標移動?
Home快速定位光標到行首
End快速定位光標到行尾
PageUp進行文本的向上翻頁?
PageDown進行文本的向下翻頁
Backspace刪除光標左側的字符
Del刪除光標位置的字符
?
?
刪除操作?
x刪除光標處的單個字符?
dd刪除光標所在行?
dw刪除當前字符到單詞尾(包括空格)的所有字符?
de刪除當前字符到單詞尾(不包括單詞尾部的空格)的所有字符?
d$刪除當前字符到行尾的所有字符?
d^刪除當前字符到行首的所有字符?
J刪除光標所在行行尾的換行符,相當于合并當前行和下一行的內容
?
替換操作
:s/old/new?將當前行中查找到的第一個字符“old”?串替換為“new”
:s/old/new/g?將當前行中查找到的所有字符串“old”?替換為“new”
:#,#s/old/new/g?在行號“#,#”范圍內替換所有的字符串“old”為“new”
:%s/old/new/g?在整個文件范圍內替換所有的字符串“old”為“new”
:s/old/new/c?在替換命令末尾加入c命令,將對每個替換動作提示用戶進行確認
?
撤消操作?
u取消最近一次的操作,并恢復操作結果
可以多次使用u命令恢復已進行的多步操作?
U取消對當前行進行的所有操作?
Ctrl?+?r對使用u命令撤銷的操作進行恢復??
?
復制與粘貼操作?
yy復制當前行整行的內容到vi緩沖區?
yw復制當前光標到單詞尾字符的內容到vi緩沖區?
y$復制當前光標到行尾的內容到vi緩沖區?
y^復制當前光標到行首的內容到vi緩沖區
p讀取vi緩沖區中的內容,并粘貼到光標當前的位置(不覆蓋文件已有的內容)?
?
字符串查找操作?
/word從上而下在文件中查找字符串“word”?
?word?從下而上在文件中查找字符串“word”
n定位下一個匹配的被查找字符串?
N定位上一個匹配的被查找字符串
?
轉載于:https://www.cnblogs.com/liuxiaowei/p/7163504.html
總結
以上是生活随笔為你收集整理的vi/vim 编辑器详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝牙耳机连接手机教程(如何使用蓝牙耳机连
- 下一篇: 实验三+067+冯艳芳