vi編輯器對老手而言,最大的長處之中的一個就是有很是多選項可以使用。而對於新手而言,這也是它的一大難點。本章介紹主要的vi文本編輯命令。這一篇文章主要介紹怎樣移動光標,以及怎樣添加和更改文本。編輯器
以前講過,vi編輯器有兩種模式,命令模式和插入模式。spa
在命令模式中,所輸入的一切都會被vi編輯器當作是輸入的命令。而在插入模式中,所輸入的一切都被當作對應的文本更新到文件緩衝區中。當打開vi編輯器時。默認是命令模式,有很是多方式可以從命令模式轉化爲插入模式,好比輸入 "i" 。假設要從插入模式轉化爲命令模式。僅僅需按"ESC"鍵就能夠。所以假設你不知道當前處於vi的哪一種模式,可以先按下ESC鍵回到命令模式。命令行
移動光標:當需要編輯文本時,首先需要作的可能就是將光標移動到需要編輯的地方。class
移動光標時首先需要確認你處於vi的命令模式中。移動光標有例如如下命令:object
單一的移動:command
h: 向左移動一個字符。
j: 向下移動一行;方法
k: 向上移動一行;im
l: 向右移動一個字符。新手
儘管可以經過上下左右四個按鍵或者經過"BACKSPACE"和"ENTER"鍵來實現移動,但是這四個命令更爲常用,因爲它可以使咱們的手指不離開鍵盤中心就能完畢光標的移動。總結
當往某個方向移動到極限時,就沒法繼續移動了。
可以在這些移動命令前面加上數字。達到命令反覆的功能。好比輸入"4l"就至關於按下了4次l命令,即能直接將光標向右移動四個字符。
這樣的命令反覆功能可以給咱們不少其它選擇。並加強命令的功能。應該牢記。
在一行中高速移動的命令有兩個:
0: 移動到行的開頭;
$: 移動到行的尾部;
注意在vi編輯器中。屏幕上可見的一行並不必定就是真正的一行,vi編輯器是以換行符做爲行的結尾。所以可能在屏幕上顯示爲多行,但實際上就是一行。例如如下圖所看到的,儘管屏幕上看上去佔用三行,但實際就是一行:
可以依照文本塊來移動,文本塊可以是單詞,句子或段落。
w: 將光標移動到下一個單詞,當中符號和標點也被以爲是一個單詞;
W: 將光標移動到下一個單詞,當中標點和符號不被當成一個單詞。
b: 將光標倒退一個單詞,當中標點和符號被當成一個單詞;
B: 將光標倒退一個單詞,當中標點和符號不被當成一個單詞。
固然這些單詞移動的命令也可以加上數值參數,這樣就能同一時候移動多個單詞,好比2w,5b等。
可以使用" G "命令直接移動到某個特定的行。
直接輸入" G "命令,是移動到文件的尾部,1G是移動到文件的第一行。即文件頂端,而10G就能直接移動到文件的第十行。
編輯文本:
插入新文本:使用「 i 」命令進行文本的插入,i命令使vi編輯器從命令模式轉化爲插入模式,以後輸入的一切都會被當成輸入的文本更新到緩衝區中。" i "命令的細節值得說一下:輸入" i "命令時。光標不移動。在光標以前的位置開始插入文本。
加入文本:加入文本使用" a "命令。a命令和i命令基本相似。僅僅只是在輸入" a "命令時,光標會向後移動一個字符,所以是在原先光標以後輸入文本。所以就被稱爲"加入"文本。
更改文本:假設需要更改文本,則需要使用" c "命令。更改命令可以以爲是先刪除需要被替換的文本,而後等待你輸入新的文本,輸入的文本的長度沒有要求。使用從c命令時,爲了告訴c命令有多少文本需要更改,可以把c命令與光標移動命令一塊兒使用:
cw: 從光標所在位置到該單詞的結尾;
c$: 從光標所在位置到該行結尾,也可以直接使用C命令;
c0: 從光標所在位置到該行開頭;
c2b: 從光標位置往回兩個單詞,等等相似使用方法;
假設需要改動一整行。可以直接輸入cc命令。無論此時光標在該行的何處,cc命令將直接將一整行文本替換成輸入的新文本。cc命令和上面提到的C命令都是其它命令的簡寫形式。
事實上不止c命令。其餘如刪除( d )命令,拖曳( y )命令等等命令。都有例如如下的通常形式: ( command ) ( text object )形式。這裏的command 就是咱們的c,d,y等命令,而text object則是光標移動命令。指明command影響的文本範圍。因爲光標移動命令可以使用數值參數,所以可以這樣使用 "d2w", 而"2dw"也是全然同樣的效果。
" r "命令可以把一個字符替換爲還有一個字符。而且替換以後直接是命令行模式,不需要按下ESC鍵從輸入模式回到命令模式。
相對於" r "命令,R命令也可以進行字符的替換,但是" r "鍵一次僅僅能替換一個字符,而按下R鍵後,則會進入覆蓋模式。
即你輸入的字符將逐一覆蓋原有的字符,直到按下ESC鍵。但是R命令最多僅僅能覆蓋一整行。
" s "命令:也是用於字符的替換,它可以指定數值參數,表明替換多少個字符。假設僅僅使用" s "命令。則表明替換當前光標所在的字符。
" s "命令首先刪除需要被替換的字符。而後等待插入新的字符,插入完成後需要手動按下ESC鍵又一次回到命令模式。
S命令:S命令直接替換一整行文本,不管當前光標在該行的哪一個位置,都直接先將該行刪除。
所以S命令等同於cc命令。但和C命令有差異。
更改大寫和小寫: 經過" ~ "命令完畢對當前字符的大寫和小寫轉換。即當前假設是大寫。則轉化爲小寫,假設當前是小寫。則轉化爲大寫。更改以後光標本身主動移到下一個字符。
本章vi編輯器命令總結:
h,j,k,l,w,b,G,i。a,c。cc。C,r,R。s,S,~。