Vim簡易教程(1)
我很早以前就在用 vim,不過水平很菜,就會最基本的操作。而且經常猶豫是不是要投奔Emacs陣營呢,畢竟在傳說中,Emacs強大無比,可以秒殺一切。但是Emacs似乎學起來難度更大,最後還是決定投身vim吧。
一次無意中找到了Steve Oualline 寫的 VI iMproved 一書,看過之後我才真的覺得自己算是入門了。我的這一系列博客其實就是我學習 VI iMproved 一書的學習筆記,希望對各位准備學習VIM的同學有些幫助。
www.2cto.com
(vim和Emacs似乎有些相克,學會了一個就很難再學另一個了,因此,如果決定了學習vim就不要念想著Emacs了)
比起其他的文本編輯器,VIM的學習曲線陡峭的多。我盡量每篇博客只介紹一個小的主題,讓大家容易消化學習。(這一系列博客准備寫81篇,寓意學習vim只有經過81難才能修成正果。不知道能不能堅持寫完啊。)
Vi 是Unix世界裡極為普遍的全屏幕文本編輯器,VIM是它的改進版本Vi IMproved的簡稱,和Emacs並列成為類Unix系統用戶最喜歡的編輯器。幾乎可以說任何一台Unix機器都會提供這套軟件。由於Vim具有代碼補完、編譯及錯誤跳轉等方便編程的功能,在程序員中被廣泛使用。
www.2cto.com
VIM 簡史
vi是Bill Joy所寫,當時他還在Berkeley。Ken Thompson去Berkeley的時候帶去了他那不完整的Pascal系統,而Bill Joy恰好在暑假就接到修復它的工作,他對修復代碼時使用的編輯器ed很不滿意。正好,他們從一個叫George Coulouris的家伙那裡拿到了em的代碼,em比ed要好用。他們就修改了em,發明了en,而最終又變成了ex(連Bill Joy本人也不知道怎麼就變成了ex)。後來他熬了幾個月的夜寫出了vi。
Bram Moolenaar 在 80 年代末購入他的 Amiga計算機時,Amiga 上還沒有他最常用的編輯器vi。Bram 從一個開源的 vi 復制 Stevie 開始,開發了 Vim 的 1.0 版本。最初的目標只是完全復制 vi 的功能,那個時候的 Vim 是Vi IMitation(模擬)的簡稱。1992 年 1.22 版本的 Vim 被移植到了 UNIX 和 MS-DOS上。從那個時候開始,Vim 的全名就變成 Vi IMproved(改良)了。在這之後,Vim 加入了不計其數的新功能,包括多視窗編輯模式(分割視窗)、 highlight(語法高亮)功能、代碼折疊、插件、多國語言支持、拼字檢查、上下文相關補完,標簽頁編輯等新功能。
第一課 最基本的操作
從命令行模式運行gvim:gvim
命令行模式打開一個文件:gvim file.txt
如果 file.txt 不存在,則新建一個空文件。
圖 1 新建一個空文件 file.txt
圖 1 中可以看到每行前都有個波浪號(~),這表示這行不在文件中。因為是空文件,當然一行數據都沒有。
VIM 的工作模式
不同於一般的文本編輯器,VIM存在3種工作模式,分別是命令模式,插入模式和 VISUAL 模式。剛打開vim 時處於命令模式,按一下鍵盤i 則進入插入模式。注意這時的窗口左下角原本顯示文件名的地方現在顯示“-- INSERT --”。在插入模式下我們可以像普通的編輯器那樣輸入文本,進行編輯。當我們想退回命令模式時按<Esc>鍵。
移動光標
在命令模式下移動光標可以用鍵盤上的箭頭鍵。但是最快捷的方式是下面四個鍵:
左:h
右:l
上:k
下:j
由於移動光標是最常做的操作,因此給它們分配在右手最方便按到的四個鍵。
刪除字符和一行
刪除當前光標所在的字符:x 鍵
刪除一行:dd
撤銷和恢復
撤銷最近的一次操作:u
恢復最近的一次撤銷操作:Ctrl-R
退出
保存當前文件並退出:ZZ (注意是兩次大寫的Z)
退出但不保存: :q! (冒號 q 然後是感歎號,三個字符)
如果你只是看了看文件沒做任何修改,可以省去上面命令最後的感歎號(!)
其他幾個最基本的編輯命令
在當前行的末尾插入字符(進入到插入模式,並把光標挪到當前行的行尾): a 鍵 (append)
在光標的下一行插入一個空行,並把光標挪到下一行:o 鍵 (open)
獲取幫助信息
:help
:help subject
比如想看看x命令的幫助: :help x
看看CTRL-A 名利的幫助::help CTRL-A
有時,同一個快捷鍵在不同模式時代表不同的命令,vim 默認認為查詢的是命令模式下的那個命令。可以加上前綴來區分不同的模式。i_ 表示插入模式。v_ 表示VISUAL模式。: 表示ex模式。比如下面的例子:
:help i_CTRL-H
:help :quit
重復執行一個命令多次
可以在命令前加上個數字,比如我要在當前位置插入10個a。
10ia<Esc>
最後的<Esc>是為了退回命令模式。如果執行的命令不會讓vim從命令模式進入到其他模式可以不加最後的<Esc>。比如將光標左移3個字符:
3h
OK,知道上面這些就可以進行最基本的操作了。練熟這些再開始第二課。