VI編輯器技巧
vi其實是ex行編輯器的可視模式,ex編輯器每次默認顯示一行,要在vi中使用ex命令需先輸入:進入ex模式。
vi是visual editor,讀作vee-eye
vi默認是命令模式的,vi一開始是命令模式的,此時所有按鍵都代表命令,在插入模式中你輸入的東西都是文件內容,vi命令大小寫有區別,/ 與?開始搜索命令,:用于開始所有的ex命令,因為vi只是可視化的ex行編輯器,保存文件可以用大寫的ZZ 或者:wq等方式。:q! 與 :e! 可以恢復不保存修改的結果,q會推出vi編輯器,e還會直接留在vi中,:w nfilename 可以把緩沖區的內容保存在一個新文件中,:! linux-comm :進入ex編輯模式 !之后可以輸入linux命令來查看一些信息。
在vi的命令模式下輸入:sh 可以打開一個新的shell做完各種操作后,按ctrl-d或者exit即可回到原來的vi命令模式下,還有一種方法是ctrl-z暫停vi進入unix提示符下,然后fg可以回到vi中。
鍵盤上面hjkl四個鍵緊挨在一起,h:左移一個字符,l:右移一個字符,j:下移一行,k:上移一行,
w:一次移動一個單詞,標點符號也算一個單詞 W:也是一次移動一個單詞,但是標點符號不算單詞
b:一次倒退一個單詞,標點符號也算一個單詞 B:一次倒退一個單詞,但是標點符號不算單詞
G:可以移動到文件末尾行,2G、10G之類表示移動到第二,第十行
i插入 a添加(追加)的區別:
按下i插入時光標不會移動,所插入字符在光標之前顯示,按下a時光標會后移一個字符,所插入字符在光標前顯示,最總的效果是前者在光標之前加入字符,后者在光標之后加入字符。
c更改文本,當文本中有需要更改的文本時可以用c命令,在命令模式下用c?命令之后,會刪除相關文本,自動進入插入模式,因為是修改嘛,?表示各種組合字符。
cw 刪除從光標處到單詞結尾的字符
c0 刪除從光標處到本行開頭的字符
c$ 刪除從光標處到本行結尾(試驗未成功)
cc 刪除一整行文本,然后開始插入新文本
r 也是更改字符,一次更改一個字符,按下r后界面不會有任何變化,直接輸入要變成的字符即可,一次只能改變一個字符,他不會進入插入模式,更改完畢后還是命令模式下
R 也是更改字符,他一次可以更改一整行字符,按下R后,屏幕底下會顯示進入REPLACE模式
d 刪除文本 d? ?可以是各種需要的文本對象
dw 刪除一個單詞,該單詞緊跟的空格也會被刪除,de刪除一個單詞,但是其后的空格會保留
dd 刪除一整行,2dd、6dd表示刪除2行、6行
x 刪除一個字符 u可以撤銷動作
vi 中移動文本就是刪除+粘貼的組合,移動文本時文本先被刪除放置在內存緩沖區中,接著移動到另一個位置,然后粘貼在新的位置上,粘貼命令就是p,小p將內容放在光標后,大P將內容放在光標前。
dd+p dd+P 將一行移動到某一行之后或之前
vi中復制文本就是拖拽+粘貼的組合,y拖拽命令也可以和其他命令組合表示復制多少內容,一般常用于復制一行yy+p
每一個操作命令和內容會存儲到臨時緩沖區直到下一個操作命令為止,因此我們可以用句號(.)重復利用這個命令,用p恢復內容。vi有9個刪除緩沖區,最后一次刪除的內容放置在緩沖區1,倒數第二次的是緩沖區2,以此類推,要恢復的話格式是:"np n代表第幾個緩沖區,緩沖區的內容將出現在光標后。小規模的刪除,行以內的不會保存在緩沖區。
vi有26個拖拽緩沖區(a-z命名),y與d可搭配26個字母使用,yy表示把一行復制放入緩沖區中,"cyy表示把內容放入名字為c的緩沖區,"c6yy表示吧后續6行內容放入名字為c的緩沖區,"cp 把名字是c的緩沖區的內容放在光標后, “cP 放入光標前
J 大寫 可以合并兩行內容。6J 表示一次合并6行內容
上述只是入門了......
搜索模式:/ 向前搜做 ? 向后搜索 搜索模式會保留在會話中,可以用n/N 重復利用以前的搜索模式, n 同一個方向,N 反方向的搜索
G 跳轉命令,默認的G跳轉到文件末尾處,可以用行號在文件中移動光標到指定行,G接受行號作為參數進行跳轉,輸入兩個反引號(``)即可跳轉到之前行的光標處一對引號('')也可以跳回到原來的行處,不過光標位置不是原來的位置,而是在行首出閃爍。(在跳回之前行之間不能做其他操作才能用''、`` 進行返回)
用vi打開文件
vi file 打開文件,光標位置在行首
vi + file 在最后一行打開文件
vi +n file 在第N行打開文件
vi -/pattern file 打開文件在第一次匹配pattern處,如果模式有空格用''、"" 包圍起來
vi -R file / view file 以只讀模式打開文件,輸入:w!會從只讀模式轉化成可寫模式
vi -r 可以保存緩存區的內容,在系統死機崩潰后可以恢復文件