vi常用用法總結
阿新 • • 發佈:2017-11-27
vi 常用用法 0(零) 將光標移到當前行的行首
$ 將光標移到當前行的行末
##G 將光標移到G前面的數字指定的行。例如,42G將光標移到文件的第42行
G 將光標移到文件的最後一行
w 將光標向前移到下一個單詞的首字母
e 將光標向前移到下一個單詞的最後一個字母
b 將光標向後移到上一個單詞首字母
- 將光標定位到上一行的行首
+ 將光標定位到下一行的行首
12| 將光標定位到當前行的第12列
L 將光標定位到屏幕的最下面一行
M 將光標定位到屏幕中間的一行
H 將光標定位到屏幕的最上面一行
” 兩個單引號將光標移到它的先前的位置 :set nu
:set nonumber 清除屏幕上的行號。
文本刪除命令
dd 刪除當前光標所有的文本行
#dd 刪除#行文本
x 刪除光標所在的一個字符
#x 從文本中(光標位置開始向行末)刪除#個字符
D 刪除當前行上光標後面的部分
:#,#d 例如,:12,37d 將刪除第12~37行之間的所有文本,包括第12和37行
撤銷命令
u撤銷。恢復最近一次的文本修改操作,即使已經移動了光標。
yw 將當前光標所在的單詞接出或復制到內在緩沖區。6yw命令將把當前單詞和它後面的5個(共6個)單詞復制到內存
dw 刪除當前的單詞,並將它放到與yw命令使用的相同的內存緩沖區。可以使用p命令將單詞粘貼到文件的其他地方
yt#接出從光標到向前一個字符(不包括該字符)之間的文本。例如,ytB命令將從光標到字符B的下一實例(不包括字符B)之間的文本接出或復制到內存
p 將內存中的文本行粘貼到文件中光標所在行的下面,或將內存中的單詞粘貼到文件中光標的右側
P(大寫) 將接出或刪除的文本行粘貼到文件中光標所在行的上面。或將接出或刪除的單詞粘貼到文件中光標的左側
文件移動命令
J 將下行文本同當前行合並成一行
:#,# move # 將指定的行移到目標位置。:12,35 move58命令將第12~35行之間的所有文本移到第58行的後面。縮寫為mo
:1,26 co 82 將第1~26行之間的所有文本復制到第82行的後面(可以選擇行號)
使用可視化編輯器進行全局編輯
:s /target/replacement/查找當前行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。只修改當前行上的第1個目標實例
:g /target/s//replacement/查找所有行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。修改所有行上目標的第1個實例
:#,# s/target/replacement/ 在指定的行上進行替換。例如,:7,37s/march/walk/將查找第7~37行之間的所有文本行,並用字符串walk替換每行中的第1個目標字符串march。所有指定行上的第1個目標字符串修改
:#,# s/target/replacement/g 在指定的行上進行全局替換。例如,:1,$ s/fun/joyful/g將在第1行到文件最後一行之間查找目標字符串fun的所有實例並刪除,然後用字符串joyful替換。指定行上的目標字符串 的所有實例都被修改
:g /target/s/replacement查找所有行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。所有行上的第1個目標都被修改
$ 將光標移到當前行的行末
##G 將光標移到G前面的數字指定的行。例如,42G將光標移到文件的第42行
G 將光標移到文件的最後一行
w 將光標向前移到下一個單詞的首字母
e 將光標向前移到下一個單詞的最後一個字母
b 將光標向後移到上一個單詞首字母
- 將光標定位到上一行的行首
+ 將光標定位到下一行的行首
12| 將光標定位到當前行的第12列
L 將光標定位到屏幕的最下面一行
M 將光標定位到屏幕中間的一行
H 將光標定位到屏幕的最上面一行
” 兩個單引號將光標移到它的先前的位置
設置顯示選項
:set number 將行號作為屏幕顯示的一部分,但是行號並不是文件的一部分。它的縮寫形式為
:set nonumber 清除屏幕上的行號。
文本刪除命令
dd 刪除當前光標所有的文本行
#dd 刪除#行文本
x 刪除光標所在的一個字符
#x 從文本中(光標位置開始向行末)刪除#個字符
D 刪除當前行上光標後面的部分
:#,#d 例如,:12,37d 將刪除第12~37行之間的所有文本,包括第12和37行
撤銷命令
u撤銷。恢復最近一次的文本修改操作,即使已經移動了光標。
a(小寫) 從光標的右側開始插入文本
A(大寫) 從當前行的行末開始添加文本
i(小寫) 從光標的左側開始插入文本
I(大寫) 從當前行的行首插入文本
o(小寫) 在光標的下面打開(或插入)一個新行
O( 大寫) 在光標的上面打開一個新行
:#r filename 例如,:8rreport.old讀取文件report.old,並將它的內容放到當前文件的第8行之後
s(小寫) 替換單個字符
S(大寫) 替換整行文本
r 用輸入的下一個字符替代當前光標處的字符,並自動返回到命令模式
C(大寫) 修改行上從光標到行末之間的文本
yy將當前行復制或接出到內在緩沖區。20yy將當前行和它後面的19行(共20行)文本復制到內存。目標行仍然保留在文件中,可以使用p命令將這些內存中的文本粘貼到文件中
dd刪除當前行,並將它放到與yy命令使用的相同的內存緩沖區。目標行從文件中刪除,但是可以使用p命令將它粘貼到文件中的其他地方
yw 將當前光標所在的單詞接出或復制到內在緩沖區。6yw命令將把當前單詞和它後面的5個(共6個)單詞復制到內存
dw 刪除當前的單詞,並將它放到與yw命令使用的相同的內存緩沖區。可以使用p命令將單詞粘貼到文件的其他地方
yt#接出從光標到向前一個字符(不包括該字符)之間的文本。例如,ytB命令將從光標到字符B的下一實例(不包括字符B)之間的文本接出或復制到內存
p 將內存中的文本行粘貼到文件中光標所在行的下面,或將內存中的單詞粘貼到文件中光標的右側
P(大寫) 將接出或刪除的文本行粘貼到文件中光標所在行的上面。或將接出或刪除的單詞粘貼到文件中光標的左側
文件移動命令
J 將下行文本同當前行合並成一行
:#,# move # 將指定的行移到目標位置。:12,35 move58命令將第12~35行之間的所有文本移到第58行的後面。縮寫為mo
:1,26 co 82 將第1~26行之間的所有文本復制到第82行的後面(可以選擇行號)
使用可視化編輯器進行全局編輯
:s /target/replacement/查找當前行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。只修改當前行上的第1個目標實例
:g /target/s//replacement/查找所有行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。修改所有行上目標的第1個實例
:#,# s/target/replacement/ 在指定的行上進行替換。例如,:7,37s/march/walk/將查找第7~37行之間的所有文本行,並用字符串walk替換每行中的第1個目標字符串march。所有指定行上的第1個目標字符串修改
:#,# s/target/replacement/g 在指定的行上進行全局替換。例如,:1,$ s/fun/joyful/g將在第1行到文件最後一行之間查找目標字符串fun的所有實例並刪除,然後用字符串joyful替換。指定行上的目標字符串 的所有實例都被修改
:g /target/s/replacement查找所有行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。所有行上的第1個目標都被修改
vi常用用法總結