1. 程式人生 > >vi常用用法總結

vi常用用法總結

vi 常用用法

0() 將光標移到當前行的行首
$
將光標移到當前行的行末
##G
將光標移到G前面的數字指定的行。例如,42G將光標移到文件的第42
G
將光標移到文件的最後一行
w
將光標向前移到下一個單詞的首字母
e
將光標向前移到下一個單詞的最後一個字母
b
將光標向後移到上一個單詞首字母
-
將光標定位到上一行的行首
+
將光標定位到下一行的行首
12|
將光標定位到當前行的第12
L
將光標定位到屏幕的最下面一行
M
將光標定位到屏幕中間的一行
H
將光標定位到屏幕的最上面一行
兩個單引號將光標移到它的先前的位置

設置顯示選項
:set number
將行號作為屏幕顯示的一部分,但是行號並不是文件的一部分。它的縮寫形式為

:set nu
:set nonumber
清除屏幕上的行號。
文本刪除命令
dd
刪除當前光標所有的文本行
#dd
刪除#行文本
x
刪除光標所在的一個字符
#x
從文本中(光標位置開始向行末)刪除#個字符
D
刪除當前行上光標後面的部分
:#,#d
例如,:12,37d 將刪除第1237行之間的所有文本,包括第1237
撤銷命令
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命令將第1235行之間的所有文本移到第58行的後面。縮寫為mo
:1,26 co 82
將第126行之間的所有文本復制到第82行的後面(可以選擇行號)
使用可視化編輯器進行全局編輯
:s /target/replacement/
查找當前行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。只修改當前行上的第1個目標實例
:g /target/s//replacement/
查找所有行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。修改所有行上目標的第1個實例
:#,# s/target/replacement/
在指定的行上進行替換。例如,:7,37s/march/walk/將查找第737行之間的所有文本行,並用字符串walk替換每行中的第1個目標字符串march。所有指定行上的第1個目標字符串修改
:#,# s/target/replacement/g
在指定的行上進行全局替換。例如,:1,$ s/fun/joyful/g將在第1行到文件最後一行之間查找目標字符串fun的所有實例並刪除,然後用字符串joyful替換。指定行上的目標字符串 的所有實例都被修改
:g /target/s/replacement
查找所有行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。所有行上的第1個目標都被修改


vi常用用法總結