天天看點

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 将删除第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個目标都被修改