vi 的兩種命令模式;
Command(命令)模式,用於輸入命令;
Insert(插入)模式,用於插入文本;
Visual(可視)模式,用於視化的的高亮並選定正文;
Command 模式是vi或vim的默認模式,如果我們處於其它命令模式時,要通過ESC鍵切換過來。
當我們按ESC鍵後,接著再輸入:號時,vi會在屏幕的最下方等待我們輸入命令;
文件的保存和退出
:w 保存;
:w filename 另存為filename;
:wq! 保存退出;
:wq! filename 注:以filename為文件名保存後退出;
:q! 不保存退出;
:x 應該是保存並退出 ,功能和:wq!相同
光標移動
j 向下移動一行;
k 向上移動一行;
h 向左移動一個字符;
l 向右移動一個字符;
插入模式(文本的插入)
i 在光標之前插入;
a 在光標之後插入;
I 在光標所在行的行首插入;
A 在光標所在行的行末插入;
o 在光標所在的行的上面插入一行;
O 在光標所在的行的下面插入一行;
s 刪除光標後的一個字符,然後進入插入模式;
S 刪除光標所在的行,然後進入插入模式;
文本內容的刪除操作
x 一個字符;
#x 刪除幾個字符,#表示數字,比如3x;
dw 刪除一個單詞;
#dw 刪除幾個單詞,#用數字表示,比如3dw表示刪除三個單詞;
dd 刪除一行;
#dd 刪除多個行,#代表數字,比如3dd 表示刪除光標行及光標的下兩行;
恢復修改及恢復刪除操作;
u 撤消修改或刪除操作;
查找
/SEARCH 注:正向查找,按n鍵把光標移動到下一個符合條件的地方;
?SEARCH 注:反向查找,按shift+n 鍵,把光標移動到下一個符合條件的
替換
:s /SEARCH/REPLACE/g 注:把當前光標所處的行中的SEARCH單詞,替換成REPLACE,並把所有SEARCH高亮顯示;
:%s /SEARCH/REPLACE 注:把文檔中所有SEARCH替換成REPLACE;
:#,# s /SEARCH/REPLACE/g 注:#號表示數字,表示從多少行到多少行,把SEARCH替換成REPLACE;
0.前言
以前,距今約三年前,我第一次接觸Unix-like系統,
我是pico的愛好者,因為我那時用的系統是Mandrake,
當時我覺得pico給我的感覺很親切,功能也很強大.
接觸FreeBSD之後,突然發現竟然沒有pico,需要額外安裝pine才能夠取得.
但這也無妨,反正安裝很快...
直到有一天,當我要做大量取代的動作..
這時....pico就....QQ
於是我投向了vi ...去了解他的規則表示式,
一個簡單的小動作 讓繁瑣的工作瞬間解決.
此外..vi 是所有unix-like都有的編輯器...不用額外安裝
讓您在不同系統上也能夠很快的進入狀況.
1.概說
若您之前不曾使用過全屏幕的編輯器,那麼您可能連一些簡單的編輯都有問題.
如此您可能要找一個已經稍微了解vi使用的人來帶領您.
vi是一個屏幕編輯器,這表示了vi幾乎用去了屏幕上的
每一行空間來展示檔案的內容,除了屏幕上的最後一行.
這一行是用來讓您發號命令給vi及vi給你一些相關檔案信息時用的.
其它您必須了解的是vi是一個模式型編輯器.舉例來說:
你能輸入文字或者是執行命令,但是你必須在正確的模式才能夠執行.
您一剛開始編輯一個檔案時,您處在命令模式(command mode).
有一些命令能夠讓您切換到輸入模式(input mode).
然而,只有一個鍵能夠讓您離開輸入模式,那就是鍵盤左上的<Esc>鍵
若您不了解您目前處於何種模式,您可以持續的按,直到vi發出聲音警告您,
如此您已經回到命令模式.當您嘗試做了一些vi所不允許的事情,
正常來說vi會發出"哔"聲(本機操作時)
2.簡易操作
要開始編輯一個檔案您可以這樣做:
$ vi file_name <按enter鍵>
然後輸入 :set verbose mode
然後vi會提醒您:
:set the mode option may never be turn on
注:雖說如此 但對初學者來說 有多些訊息提示總比沒有好
放心 離開vi後就會恢復原先的noverbose mode
如此可以讓vi當你產生錯誤時給予你多一些的訊息並當您猛按<Esc>鍵時
,會在屏幕的最下端顯示如下的訊息,提醒您已在命令模式.
Already in comman mode
注:命令皆需要在命令模式下實行.
△簡易移動命令
h 將光標往左移動一個字符. j 將光標往下移動一行. k 將光標往上移動一行. l 將光標往右移動一個字符. <方向鍵> 上下左右鍵也應該可以發揮作用.
注:若純粹使用windows 內建的telent方向鍵無法使用..
所以知道hjkl的用處也不錯啦..
△簡易搜尋命令
/text 搜尋text字符串
若今天我要搜尋panda則是 /panda , / 為搜尋命令.
△模式切換 a 在光標後可以新增開始新增 i 在光標前可以開始新增文字 o 在光標的下方新增一行,並可以開始輸入文字. O 在光標的上方新增一行,並可以開始輸入文字. <Esc> 當你今天用a,i,o,O進入輸入模式,可以用<Esc>鍵回到命令模式. 注:經個人使用發現模式切換只要記住幾個就好 依照一般輸入習慣,
建議初學者記住a,O就好 (雖然到最後您會在不知不覺中全部記下)
尤其是O看似沒有o好用,但是今天若您想要在最上方新增一行時,
記得O這個指令真是方便阿..
△文字處理命令
復制:
yy 復制游標所在行.
p 在游標所在的下一行貼上所復制的數據. 刪除:
dd 將游標所在行刪除.
x 將光標所在的那個字符刪除. 儲檔:
:w 以原文件名稱儲存檔案.
:w file_name 另存新檔,檔名為file_name 離開:
:q 離開編輯及vi,若您已經編輯過檔案vi會拒絕您離開.
:q! 強制離開vi 不論情況 注: 所謂的一行有可能在屏幕上是很多行(因為屏幕的一行擺放不下)
只要沒有換行符號產生 那就稱之為一行,用光標移動您就會明了.
4.小結
以上這些只是基礎的vi功能,熟悉了這些,您已經會了簡單的文書處理,
已經可以逐漸擺脫pico之類的編輯器,投向vi的懷抱.
過一陣子,當您漸漸了解vi的強大,ㄏㄏ... 0.前言
本篇說明vi命令模式下可執行的命令。
所有要輸入的指令皆用藍色表示。
對於初學者來說,這個部分有點復雜了。
不過呢?以泡泡的經驗來說,用久了你自然會記住某些指令。
不用刻意去記,因為常用的自然會在不知不覺中記住。
(極有可能像我一樣,手指記住了,腦袋記不住..QQ)
注: <control+A> 表示先按住ctrl鍵再按A。(有些命令小寫也可以用)
我都是用小寫。
1.常用移動命令:
<control+A> 往下移動到這個字下次一出現的地方。 <control+B> 光標向上移動一個屏幕。 <control+D> 光標往下移動數行(約12行)。 <control+F> 光標往下移動一個屏幕。
<control+U> 光標往上移動數行(約12行)。 $ 將光標移動到該行尾. nG 移動到某行,n為行數,若沒有指定則為檔案的最後一行. L 將光標移動到屏幕的最下一行. ^ 移到該行第一個非空格符. 2.常用檔案命令
<control+G> 顯示檔案的信息。
顯示出目前檔案是否更改,所在行的位置.
file_name: unmodified : line 1 of 380 [0%] <control+L> 重畫屏幕。
<control+Z> 暫停編輯 回到shell,可用fg回到編輯畫面 <control+^> 切換到最近編輯的檔案.
vi file_name file_name2
用此命命可以在兩個檔案中切換.
3.常用編輯命令
輸入:
I 移動光標道行首的第一個字符並開始接受輸入.
復制:
Y 復制該行到暫存區(用yy也可以)
刪除:
D 從光標目前位置道行尾的所有字符刪除..(用dd也可以) x 刪除光標所在位置的一個字符
取代:
!shell命令 !後接shell comd ,並以shell cmd 執行結果取代光標該行.
如!panda
會用以下訊息取代原有行的內容
bash: panda: command not found r 按r後接著按某字符,以取代光標所在的該字符. ~ 切換光標所在字符的大小寫
重復:
n 搜尋之前所搜尋過的字符串 (用/也可以)
若先執行 /BSD
再執行 n 等同於執行 /BSD
若先前沒有搜尋任何東西 會有如下訊息
No previous search pattern. 復原:
U 恢復狀態到光標起初接觸此行的狀態
u 復原前一個動作產生的效果(也就是回復) 其它:
: 執行ex 命令 J 將下一行與此行合並.