Vim是從 vi 發展出來的一個文本編輯器 。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。和Emacs 並列成爲類Unix系統 用戶最喜歡的編輯器。php
Vim的第一個版本由Bram Moolenaar 在1991年發佈。最初的簡稱是Vi IMitation ,隨着功能的不斷增長,正式名稱改爲了Vi IMproved。如今是在開放源代碼 方式下發行的自由程序員
首先咱們看一下文本編程
第一個vi編輯的內容 vim
第二個咱們看下vim的效果數組
Vim 具備6種基本模式和5種派生模式。瀏覽器
1.基本模式數據結構
(1)普通模式app
在普通模式中,用戶能夠執行通常的編輯器命令,好比移動光標,刪除文本等等。這也是 Vim 啓動後的默認模式。這正好和許多新用戶期待的操做方式相反(大多數編輯器默認模式爲插入模式)。編輯器
Vim 強大的編輯能力中很大部分是來自於其普通模式命令。普通模式命令每每須要一個操做符結尾。例如普通模式命令 "dd" 刪除當前行,可是第一個 "d" 的後面能夠跟另外的移動命令來代替第二個 "d",好比用移動到下一行的 "j" 鍵就能夠刪除當前行和下一行。另外還能夠指定命令重複次數,"2dd"(重複 "dd" 兩次),和 "dj" 的效果是同樣的。用戶學習了各類各樣的文本間移動/跳轉的命令和其餘的普通模式的編輯命令,而且可以靈活組合使用的話,可以比那些沒有模式的編輯器更加高 效的進行文本編輯。
在普通模式中,有不少方法能夠進入插入模式。比較普通的方式是按 "a"(append/追加)鍵或者 "i"(insert/插入)鍵。
(2)插入模式
在這個模式中,大多數按鍵都會向文本緩衝 中插入文本。大多數新用戶但願文本編輯器編輯過程當中一直保持這個模式。
在插入模式中,能夠按 ESC 鍵回到普通模式。
(3)可視模式
這個模式與普通模式比較類似。可是移動命令會擴大高亮的文本區域。高亮區域能夠是字符、行或者是一塊文本。當執行一個非移動命令時,命令會被執行到這塊高亮的區域上。Vim 的"文本對象"也能和移動命令同樣用在這個模式中。
(4)選擇模式
這個模式和無模式編輯器的行爲比較類似(Windows標準文本控件的方式)。這個模式中,能夠用鼠標或者光標鍵高亮選擇文本,不過輸入任何字符的話,Vim 會用這個字符替換選擇的高亮文本塊,而且自動進入插入模式。
(5)命令行模式
在命令行模式中能夠輸入會被解釋成並執行的文本。例如執行命令(":" 鍵),搜索("/" 和 "?" 鍵)或者過濾命令("!" 鍵)。在命令執行以後,Vim 返回到命令行模式以前的模式,一般是普通模式。
(6)Ex 模式
這和命令行模式比較類似,在使用 ":visual" 命令離開 Ex 模式前,能夠一次執行多條命令。
2. 派生模式
(1)操做符等待模式
這個派生模式指普通模式中,執行一個操做命令後 Vim 等待一個"動做"來完成這個命令。Vim 也支持在操做符等待模式中使用"文本對象"做爲動做,包括 "aw" 一個單詞(a word)、"as" 一個句子(a sentence)、"ap" 一個段落(a paragraph)等等。
好比,在普通模式下 "d2as" 刪除當前和下一個句子。在可視模式下 "apU" 把當前段落全部字母大寫。
(2)插入普通模式
這個模式是在插入模式下按下ctrl-o鍵的時候進入。這個時候暫時進入普通模式,執行完一個命令以後,Vim 返回插入模式
(3)插入可視模式
這個模式是在插入模式下按下ctrl-o鍵而且開始一個可視選擇的時候開始。在可視區域選擇取消的時候,Vim 返回插入模式。
(4)插入選擇模式
一般這個模式由插入模式下鼠標拖拽或者shift方向鍵來進入。當選擇區域取消的時候,Vim 返回插入模式。
(5) 替換模式
這是一個特殊的插入模式,在這個模式中能夠作和插入模式同樣的操做,可是每一個輸入的字符都會覆蓋文本緩衝中已經存在的字符。在普通模式下按 "R" 鍵進入。
其餘
Evim
Evim 是一個特殊的GUI 模式用來儘可能的表現的和"無模式"編輯器同樣。編輯器自動進入而且停留在插入模式,用戶只能經過菜單、鼠標和鍵盤控制鍵來對文本進行操做。能夠在命令行下輸入 "evim" 或者 "vim -y" 進入。在 Windows 下,一般也能夠點擊桌面上 Evim 的圖標。
功能
概要
Vim 提供了文本形式的大量文檔 。而且 Vim 爲了可以快速找到問題的解決方案,提供了各類各樣的功能。根據 Vim 本身的幫助文件語法,關鍵字 會被各類各樣醒目的顏色表示出來。能夠用快捷鍵 象在瀏覽器 中那樣瀏覽幫助文件。在GUI 版的Vim中還可使用鼠標 在 幫助文件中移動。方便用戶尋找問題解決方案的功能還不止這些,其中最主要的是 ':helpgrep' 命令。使用這條命令,用戶能夠在全部幫助文件中搜索想要察看的內容,用':cwindows'能夠在另外一個窗口中表示搜索的結果,根據搜索的結果自動在幫 助文件內跳轉。使用Vim的幫助功能,更能夠在搜索的結果中,繼續進行搜索。
程序開發相關功能
Vim 是程序員 爲了方便的編寫程序而開發的編輯器 。Vim 具備可讓寫代碼的工做變得輕鬆愉快的各類各樣功能。和集成開發環境 同樣,Vim 具備能夠配置成在編輯代碼源文件以後直接進行編譯 的功能。編譯 出錯的狀況下,能夠在另外一個窗口中顯示出錯誤。根據錯誤信息,直接跳轉到正在編輯的源文件出錯位置。代碼高亮,文本摺疊,上下文關聯補完都是對程序員 特別有幫助的功能(參考 ':help quickfix')
文件比較
能夠逐行的對文本文件進行比較。Vim 能夠並排顯示兩個版本的文件,同時以各類各樣的顏色來表示有差異部分。改變過、新增的或者是被刪除的行會以顏色高亮來強調,沒有改變過的部分則會被自動摺疊表示。
對於已經在vim中打開的兩個緩衝區,分別使用:diffthis 以後將會對這兩個緩衝區的內容進行比較,被比較的緩衝區能夠是一個還沒有存盤的內存中的緩衝區。
在比較兩個文件的不一樣之處時,能夠用:diffget和:diffput命令對每一處不一樣進行雙向的同步,也能夠在比較不一樣時對內容進行其它編輯,而後用:diffupdate 對最新內容從新進行比較。
在瀏覽兩個文件的不一樣之處時,能夠用[c和]c兩個Normal模式的命令直接跳轉到上一個和下一個不一樣之處。
能夠經過diffopt 等選項更精細地控制哪些區別被認爲是真正的不一樣之處,好比能夠設置比較時忽略空白字符數量的不一樣。
Unix 下能夠用 vimdiff 命令來使用這個功能。
腳本語言
Vim 有她本身的腳本語言 ,使用腳本語言寫成的宏 能夠實現自動執行復雜的操做。用 -s 選項啓動 Vim ,或者直接切換到宏 所在目錄 使用 ':source' 命令均可以執行 Vim 腳本。Vim 的配置文件就能夠做爲 Vim 腳本的一個範例,Unix 和Linux 下配置文件名是.vimrc,Windows 下配置文件通常叫作 _vimrc。這個文件在啓動 Vim 的時候被自動執行。Vim 腳本語言 可使用 Vim 命令行 模式的全部命令 ,使用 ':normal' 命令還可使用一般模式中的全部命令。Vim 腳本語言具備數字,字符串兩種數據類型 。用數字表明布爾類型 ,0表明假,以外的數全表明真。最新的 Vim 7 更提供了列表 、關聯數組 等高級數據結構 。Vim 腳本語言也擁有各類比較運算符 和算術運算符 。控制結構實現了 if分支 和 for/while 循環。用戶還能夠本身定義函數 ,而且可使用超過100種的預約義函數 。編寫成的腳本文件能夠在調試模式中進行調試。
不足之處
它們都是多模式編輯器 ,不一樣的是vim 是vi的升級版本,它不只兼容vi的全部指令 ,並且還有一些新的特性在裏面。
vim的這些優點主要體如今如下幾個方面:
一、多級撤消
咱們知道在vi裏,按 u只能撤消上次命令,而在vim裏能夠無限制的撤消。
二、易用性
vi只能運行於unix中,而vim不只能夠運行於unix,windows ,mac等多操做平臺。
三、語法加亮
vim能夠用不一樣的顏色來加亮你的代碼。
四、可視化操做
就是說vim不只能夠在終端運行,也能夠運行於x window、 mac os、 windows。
五、對vi的徹底兼容某些狀況下,你能夠把vim當成vi來使用。