標籤:
百度關於vi的資料 http://baike.baidu.com/view/908054.htm
關於vi 和vim的介紹可以在上面的網址看到。
1 進入和退出vi
進入:在終端命令列輸入 vi 檔案名稱 就會進入vi,並且建立了一個空的名字為剛才輸入的檔案,假如進入vi的時候不加檔案名稱,那麼進入vi後系統會自動建立一個空檔案,你可以在命令模式下給這個檔案改名。
退出:按ESC切換到命令模式下,輸入
:q 這是沒有儲存就退出,一般系統會提示你要不要儲存
:q! 強制退出,不儲存
:wq 儲存並退出
如果之前沒有命名檔案名稱,可以在w後跟上你想要起的檔案名稱
2 vi 的三種模式
命令模式(進入時的預設模式):
任何輸入都會作為編輯命令,內容不會出現在螢幕上,如果輸入錯誤,系統會發出錯誤提示聲音。任何輸入都會立即反應;
輸入模式(編輯模式):
從命令模式進入輸入模式,可以輸入i健,然後就可以輸入字元了,在輸入模式下按ESC會返回命令模式;
特殊模式(最後行模式):
以“:“或者”/“為前置的指令,出現在螢幕的最後一行,任何輸入都會被當成特別指令。
( 所以上次我們寫C程式的步驟就是:終端輸入 vi hello.c 進入vi編輯器,此時預設為命令模式,按i健進入編輯模式,然後就可以輸入程式了,完成以後,按ESC鍵,即退出編輯模式,進入了命令模式,然後輸入“:“,即進入最後行模式,然後我們輸入儲存退出命令wq 即可。)
Vi中關於編輯的命令非常多,這裡就不一一介紹了,網上有很多,命令關鍵在於使用,只有使用熟練了,才能體會到vi編輯器的效率。下面是節選自《Linux C編程》(清華出版社,李玉波)中的一節介紹vim的,vim的命令基本和vi一樣,大家可以參考。
vim(vi improve)可以說是Linux中功能最為強大的編輯器,它是由UNIX系統下的傳統文字編輯器vi發展而來的。下面首先介紹一下vi。
vi是個可視化的編輯器(vi就意味著可視化—— visual)。 那麼,什麼是可視化的編輯器呢?可視化的編輯器就是可以在編輯文本的時候看到它們。非可視化的編輯器的例子可以舉出不少,如ed、sed和edlin(它是DOS內建的最後一個編輯器) 等。vi成為BSD UNIX的一部分,後來AT&T也開始用vi,於是標準UNIX也開始 用vi。Linux下的vim是vi的一個增強版本,有彩色和高亮等特性,對編程有很大的協助。
1. 啟動與退出vim
由於vim的功能很多,首先來看如何啟動和退出vim。
(1) 在Linux提示符下鍵入vim(或使用vim myfile來編輯已經存在的檔案)即可啟動它。
(2) 要退出vim,先按下Esc鍵回到命令列模式,然後鍵入“:”,此時游標會停留在最下面一行,再鍵入“q”,最後按下Enter鍵即可,見圖2-1。
技巧:
在X-Window下也可以通過在“開始”菜單裡找到“編程”︱Vi I Mproved來運行X-Window下的vim。
2. 命令列模式的操作
命令列模式提供了相當多的按鍵及組合按鍵來執行命令,協助使用者編輯檔案。由於這些命令相當多,在此僅作簡單介紹。
(1) 移動游標
在命令列模式和插入模式下,都可以使用上、下、左、右4個方向鍵來移動游標的位置。但是有些情況下,如使用telnet遠程登陸時,方向鍵就不能用,必須用命令列模式下的游標移動命令。這些命令及作用見表2-1。
表2-1 常用的移動游標的命令
命 令 |
操 作 說 明 |
h |
將游標向左移動一格 |
l |
將游標向右移動一格 |
j |
將游標向上移動一格 |
k |
將游標向下移動一格 |
0 |
將游標移動到該行的最前面 |
$ |
將光移動到該行的最後面 |
G |
將游標移動到最後一行的開頭 |
W或w |
將游標移動到下一個字 |
e |
將游標移動到本單詞的最後一個字元。如果游標所在的位置為本單詞的最後一個字元,則跳動到下一個單字的最後一個字元。標點符號如“.”、“,”或“/”等字元都會被當成一個字 |
b |
將游標移動到單詞的最後一個字元,如果游標所在位置為本單詞的第一個字元,則跳到上一個單詞的第一個字元 |
{ |
將游標移動到前面的“{”處。在C語言編程時,如果按兩次就會找到函數開頭“{”處,如果再次連續按兩次還可以找到上一個函數的開頭處 |
} |
同“{”的使用,將游標移動到後面的“}” |
Ctrl+b |
如果想要翻看文章的前後,可以使用Page Down和Page Up;但當這兩個鍵不能使用時,可以使用Ctrl+b將游標向前卷一頁,相當於Page Up |
Ctrl+f |
將游標向後卷一頁,相當於Page Down |
Ctrl+u |
將游標向前移半頁 |
Ctrl+d |
將游標向後移半頁 |
Ctrl+e |
將游標向下卷一行 |
Ctrl+y |
將游標向後卷一行 |
N+\ |
將游標移至第n行(n為數字) |
(2) 複製文本
複製文本可以節省重複輸入的時間,vim也提供了以下的操作命令,見表2-2。
表2-2 常用的複製文本的命令
命 令 |
操 作 說 明 |
y+y |
將游標目前所在的位置整行複製(連續按兩次y) |
y+w |
複製游標所在的位置到整個單詞所在的位置(w,可以理解為word,即一個單詞) |
n+y+w |
若輸入3yw,則會將游標所在位置到單詞結束以及後面兩個單詞(共3個單詞)一起複製 |
n+y+y |
若按3yy,則將連同游標所在位置的一行與下面兩行一起複製 |
p |
將複製的內容粘貼游標所在的位置。若複製的是整行文本,則會將整行內容粘貼到游標所在的位置 |
(3) 刪除文本
刪除文本命令一次可刪除一個字元,也可以一次刪除好幾個字元或是整行文本,見表2-3。
表2-3 常用的刪除文本的命令
命 令 |
操 作 說 明 |
d+左方向鍵 |
連續按d和左方向鍵,將游標所在位置前一個字元刪除 |
d+右方向鍵 |
將游標所在位置字元刪除 |
d+上方向鍵 |
將游標所在位置行與其上一行同時刪除 |
d+下方向鍵 |
將游標所在位置行與下一行同時刪除 |
d+d |
連按兩次d,可將游標所在的行刪除,若是連續刪除,可以按住d不放 |
d+w |
刪除游標所在位置的單詞,若是游標在兩個字之間,則刪除游標後面的一個字元 |
n+d+d |
刪除包括游標所在行及向下的n行(n為數字) |
n+d+上方向鍵 |
刪除包括游標所在行及向上的n行 |
n+d+下方向鍵 |
同n+d+d命令 |
D |
將游標所在行後所有的單詞刪除 |
x |
將游標所在位置的字元刪除 |
X |
將游標所在位置前一個字元刪除 |
n+x |
刪除游標所在位置及其後的n個字元 |
n+X |
刪除游標所在位置及其前的n個字元 |
(4) 找出行數及其他按鍵
當我們編寫程式時,常常需要跳到某一行去修改,因此每一行的行號就相當重要。vim為此提供的命令見表2-4。
表2-4 常用的找出行數的命令
命 令 |
操 作 說 明 |
Ctrl+g |
在最後一行中顯示光線標所在位置的行數及文章的總行數 |
nG |
將游標移至n行(n為數字) |
r |
修改游標所在字元 |
R |
修改游標所在位置的字元,可以一直替換字元,直到按下ESC鍵 |
u |
表示複原功能 |
U |
取消對行所做的所有改變 |
. |
重複執行上一命令 |
Z+Z |
連續兩次輸入z,表示儲存檔案並退出vi |
% |
符號匹配功能,在編輯時,如果輸入“%(”,系統將會自動匹配相應的“)” |
3. 命令列模式切換到輸入模式
進入vim時,預設的模式是命令列模式,而要進入輸入模式輸入資料時,可以用下列按鍵:
● 按“a”鍵 從目前游標所在位置的下一個字元開始輸入。
● 按“i”鍵 從游標所在位置開始插入新輸入的字元。
● 按“o”鍵 新增加一行,並將游標移到下一行的開頭。
4. 最後行模式的操作
vim的最後行模式是指可以在介面最底部的一行顯示的輸入命令,一般用來執行尋找特定的字串、儲存及退出等任務。在命令列模式下輸入冒號“:”,就可以進入最後行模式了,還可以使用“?”和“/”鍵進入最後行模式。比起命令列模式的諸多操作命令,最後行模式的操作命令就少多了,見表2-5。
表2-5 最後行模式主要的操作命令
命 令 |
操 作 說 明 |
e |
在vi中編輯時,可以使用e建立新的檔案 |
n |
載入新檔案 |
w |
寫檔案,也就是將編輯的內容儲存到檔案系統中。vim在編輯檔案時,先將編輯內容儲存在臨時檔案中,如果沒有執行寫操作直接退出的話,修改內容並沒有儲存到檔案中 |
w! |
如果想寫唯讀檔案,可以使用w!強制寫入檔案 |
q! |
表示退出vim,但是檔案內容有修改的話,系統會提示要先儲存,如果不儲存退出,需要使用命令q!強制退出 |
set nu |
set可以設定vim 的某些特性,這裡是設定每行開頭提示行數。想取消設定,使用命令set none |
/ |
尋找匹配字串功能。在編輯時,想尋找包含某一個字串,可以用“/字串”自動尋找,系統會反白所有找到的字串,並轉到找到的第一個字串。如果想繼續向下尋找,可以按n鍵;向前繼續尋找則按N鍵 |
? |
也可以使用“?字串”尋找特定字串,它的使用與“/”相似,但它是向前尋找字串 |
5. vim的注意事項
由於Linux系統的vim編輯器是從UNIX下的vi發展而來的,而UNIX下的vi編輯器是從行編輯器ed發展而來的。因此,vim不如目前流行的微軟推出的同類編輯器易用、直觀,但是它的強大功能卻是微軟同類產品無法比擬的。因此一些人學習時可能會感到有一些不便和困惑。針對這類問題,這裡列出了使用vim中應注意的一些事項。當然要熟練使用vim,還需要平時操作中不斷地提高和積累。
● 插入編輯方式和命令方式切換時出現混亂
這種情況產生的原因通常是:還未輸入插入命令便開始進行文本輸入,從而無法在正確位置輸入文本;另外,當插入資訊後,還未按Esc鍵結束插入方式,就又輸入其他的命令資訊,從而使命令無法執行。
當出現這種情況時,首先要確定自己所處的操作方式,然後再確定下一步做什麼工作。若不易搞清楚當前所處的狀態,還可以使用Esc鍵退回到命令方式重新進行輸入。
● 在進行文檔編輯時,vim編輯器會產生混亂
這種狀態的產生往往是由於螢幕重新整理有誤,此時可以使用Ctrl+l鍵對螢幕進行重新整理,如果是在終端,可以用Ctrl+r進行螢幕重新整理。
● 對螢幕中顯示的資訊進行操作時,系統沒有反應。
出現這種情況可能是由於螢幕的多個進程被掛起(如不慎用了Ctrl+s鍵等),此時可用Ctrl+q進行解脫,然後重新進行輸入。
● 當編輯完成後,不能正確退出vim
出現這種情況的原因可能是系統出現了意外情況。如:檔案屬性為唯讀、使用者對編輯的檔案沒有寫的許可權。如果強行執行退出命令“:w!”仍無法退出,可以用“:w newfile”命令將檔案重新存檔後再退出,以減少工作中的損失,這個新檔案newfile應是使用者有寫入權限的檔案。
如果暫時沒有可以使用的檔案,可以借用/tmp目錄建一個新的檔案。因為Linux系統中的/tmp是一個臨時目錄,系統啟動時總要重新整理該目錄,因此作業系統一般情況下不對此目錄下進行保護。但當處理完成後,切記應將新檔案進行轉儲,否則依然會造成資訊損失。
● 在使用vim時,萬一發生了系統掉電或者突然當機的情況怎麼辦?
工作時發生了掉電和當機,對正做的工作無疑是一種損失,但是vim程式可使損失降到最小。因為,對vim的操作實際上是對編輯緩衝區的資料操作,而系統經常會將緩衝區的內容自動進行儲存。因此,當機後使用者可以在下次登陸系統後使用-r選項進入vi,將系統中最後儲存的內容恢複出來。例如,在編輯cd檔案的時候突然斷電或者系統崩潰後的恢複命令為:
[[email protected] david]$ vi cd -r
vim的學習應側重於實際的應用,在瞭解vim的使用規則後應該多上機操作,不斷積累經驗,逐步地使自己成為vi編輯能手。
Linux學習筆記之VI(VIM)編輯器