vi與vim的區別

Vim是從 vi 發展出來的一個文本編輯器 。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。和Emacs 並列成爲類Unix系統 用戶最喜歡的編輯器。php

Vim的第一個版本由Bram Moolenaar 在1991年發佈。最初的簡稱是Vi IMitation ,隨着功能的不斷增長,正式名稱改爲了Vi IMproved。如今是在開放源代碼 方式下發行的自由程序員

首先咱們看一下文本編程

第一個vi編輯的內容 vim

wKiom1jOEUyR6SWjAAALjm68vPY720.png-wh_50windows

第二個咱們看下vim的效果數組


wKioL1jOEZDDY2NhAAAR26ESewo392.png-wh_50


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來使用。

相關文章
相關標籤/搜索