Vim是一個相似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增長了不少特性。 VIM是自由軟件。 Vim廣泛被推崇爲類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不一樣變體。1999 年Emacs被選爲Linuxworld文本編輯分類的優勝者,Vim屈居第二。但在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼文本編輯器大獎,又將Emacs推至二線, 總的來看, Vim和Emacs在文本編輯方面都是很是優秀的。spring
首先咱們須要先安裝vimshell
brew install vim // mac安裝vim
apt-get install vim // ubuntu安裝vim
複製代碼
windows用戶請前往搜索引擎搜索vim下載安裝編程
本文經過vimtutor進行vim的學習,安裝完vim後在終端輸入vimtutor便可ubuntu
命令模式: 用於輸入指令,如:保存、運行、切換標籤、切割屏幕等 插入模式: 也即編輯模式,用於編輯文本 可視模式: 至關於高亮選取文本後的正常模式 正常模式: 用於查看文本,也可複製、粘貼、撤銷、重作等vim
在正常模式鍵可用h、j、k、l
來分別代替←、↓、↑、→
鍵來移動光標,對於初學者來講,這種移動光標的方式十分不習慣,可是用這種方式移動光標在編程的過程當中能夠不用頻繁的移動右手windows
注意:當某一行爲空時,h、l沒法進行左右的移動bash
若是您不敢肯定您所按下的字母,請按下鍵回到正常(Normal)模式。而後再次從鍵盤輸入您想要的命令。編輯器
恩,我已經玩熟了光標操做,這個玩意兒太方便啦,咦,可是我怎麼退出vim呢學習
一、按<ESC>
鍵,肯定你處於正常模式。ui
二、而後鍵入:q
, 而後按回車,但這樣作並不會將你修改的內容保存。
三、鍵入:wq
,能夠在退出的同時保存你所修改的內容。
四、對,你沒猜錯,若是想只保存不退出,鍵入:w
就好了
那麼我想要在正常模式下刪除某個內容怎麼辦呢,很簡單,你只須要用咱們所學的移動光標方式將光標移動到你想要刪除的文本位置,按下x
鍵便可
提示:當我對某個操做不滿意,想要撤回的時候,只要鍵入u便可
哇,我發現文本的內容不是我想要的,我要修改他,但是在正常模式下我好像沒法編輯它誒,怎麼辦。
按i
進入插入模式,在這個模式下,你能夠隨意的修改文本了,可是你不能再用h、j、k、l的方式來移動光標了,當你修改完成後,能夠按<ESC>
返回正常模式
啊?這個插入模式是什麼鬼,我怎麼只能往光標前添加內容,若是我想在本來的內容後添加新的內容怎麼辦?
你能夠在正常模式下,按a
鍵,而後輸入你要添加的內容,一樣的,在輸入完成後按<ESC>
返回正常模式。
以前的刪除方法好麻煩啊,難道我刪除一大串內容要一個一個移動光標,而後按一次又一次的x
嗎。固然不是
許多改變文本的命令都由一個操做符和一個動做構成。
使用刪除操做符 d 的刪除命令的格式以下:
d motion
一個簡短的動做列表:
w - 從當前光標當前位置直到下一個單詞起始處,不包括它的第一個字符。 e - 從當前光標當前位置直到單詞末尾,包括最後一個字符。 $ - 從當前光標當前位置直到當前行末。
簡單來講,若是我想要刪除一個單詞只須要鍵入dw
,若是我鍵入d$
,那麼這一整行的內容都被我刪了
假如vim打開的文件中某一個行有這樣一句的內容
This is just a line with words you can move around in.
個人光標在開頭的T
位置
e
,個人光標位置就會出如今This
這個單詞的末尾s
處,鍵入兩次,就會出如今下一個單詞的末尾。w
,就會出如今下一個單詞的開頭,屢次鍵入與e
的效果雷同。0
,能使個人光標出如今行首。$
,能使個人光標出如今行末。上面已經提到過刪除操做符和動做的組合,你能夠在組合中動做以前插入一個數字以刪除更多
d number(數字) motion
好比鍵入d2w
,咱們就能夠刪除光標所在位置起的兩個單詞
以前用d$
命令刪除整行內容後,咱們會發現這一行變成了一個空行,因此可能用清除整行內容來稱呼它更加合適
若是咱們要刪除當前行,能夠鍵入dd
命令
你也能夠鍵入2dd
,來刪除當前行起的兩行
u
來撤銷最後一次執行的命令U
,來使當前行恢復到初始狀態CTRL-R(先按着CTRL鍵不放,再鍵入R)
來重作撤銷的命令以前所說的dd
命令刪除了一整行內容,其實呢,他並無它並無消失,而是保存在了vim的寄存器中。
dd
命令刪除了某一行內容後,光標移到某一行,鍵入p
,剛剛刪除掉的那一行內容就會粘貼到當前行的下一行了當咱們發現某處出錯時,咱們能夠沒必要先刪除再插入來修改錯誤,這樣子太麻煩,咱們可使用替換命令。
以下兩行,第一行有錯誤,第二行是正確的,咱們想要將第一行單詞出錯的地方修正能夠怎麼作呢
Whan this lime was tyoed in, someone presswd some wrojg keys!
When this line was typed in, someone pressed some wrong keys!
p
,而後輸入所要替換的字符便可一樣的咱們也能夠更改整個單詞,而不是一個字符
cw
,而後輸入正確的內容,咱們就能夠更改整個單詞了。更改類操做符的工做方式跟刪除類是一致的。操做格式是: c [number] motion
動做參數(motion)也是同樣的,好比 w 表明單詞,$表明行末等等
cw
,我也能夠鍵入c$
,用來修改當前字符到行末的全部內容輸入 CTRL-G 顯示當前編輯文件中當前光標所在行位置以及文件狀態信息。輸入大寫 G 則直接跳轉到文件中的某一指定行
提示:切記要先通讀本節內容,以後才能夠執行如下步驟!!!
按下 CTRL 鍵不放開而後按 g 鍵。咱們稱這個鍵組合爲 CTRL-G。您會看到頁面最底部出現一個狀態信息行,顯示的內容是當前編輯的文件名和文件中光標位置。請記住行號,它會在步驟3中用到。
輸入大寫 G 可使得當前光標直接跳轉到文件最後一行。輸入 gg 可使得當前光標直接跳轉到文件第一行。
輸入您曾停留的行號,而後輸入大寫 G。這樣就能夠返回到您第一次按下CTRL-G 時所在的行了。
輸入 /
加上一個字符串能夠用以在當前文件中查找該字符串。
一、 在正常模式下輸入 / 字符。您此時會注意到該字符和光標都會出如今屏幕底部,這跟 : 命令是同樣的。
二、接着輸入你要查找的內容,而後按回車,就會查找到您所輸入的字符串
三、要查找同上一次的字符串,只須要按 n 鍵。要向相反方向查找同上一次的字符串,請輸入大寫 N 便可。
四、如想逆向查找字符串,請使用 ? 代替 / 進行。
五、要回到您以前的位置按 CTRL-O (按住 Ctrl 鍵不放同時按下字母 o)。重複按能夠回退更多步。CTRL-I 會跳轉到較新的位置。
提示:若是查找已經到達文件末尾,查找會自動從文件頭部繼續查找,除非'wrapscan' 選項被複位。
輸入%
能夠查找配對的字符串
*當你的光標位置在某一個括號上,鍵入%
,你的光標就會跳到與之配對的括號位置了,若是再次鍵入,光標就會調回配對的第一個括號處
在程序調試時,這個功能用來查找不配對的括號是頗有用的。
假若有這麼一行字符串
thee best time to see thee flowers is in thee spring.
:s/thee/the <回車>
,那麼該行的第一thee
就被我替換成了the
thee
替換,能夠鍵入:s/thee/the/g
再用vim編程的時候,若是我想輸入一個外部命令怎麼辦,難道我還須要新建個終端窗口嗎?固然不須要
一、 按下咱們所熟悉的 :
命令使光標移動到屏幕底部。這樣您就能夠輸入一行命令了。
二、 接着輸入感嘆號 !
這個字符,這樣就容許您執行外部的 shell 命令了。
三、 咱們以 ls
命令爲例。輸入 !ls <回車>
。該命令就會列舉出您當前目錄的內容,就如同您在命令行提示符下輸入 ls 命令的結果同樣。若是 !ls
沒起做用,您能夠試試 :!dir
看看。
要將對文件的改動保存到文件中,請輸入 :w FILENAME 。
一、 輸入 :!dir
或者 :!ls
獲知當前目錄的內容。您應當已知道最後還得敲<回車> 吧。
二、 選擇一個未被用到的文件名,好比 TEST。
三、 接着輸入 :w TEST
(此處 TEST 是您所選擇的文件名。)
四、 該命令會以 TEST 爲文件名保存整個文件 (Vim 教程)。爲了驗證這一點,請再次輸入 :!dir
或 :!ls
查看您的目錄列表內容。
要保存文件的部份內容,請輸入 v motion :w FILENAM
一、移動光標到某一行
二、鍵入v
,將光標移到下面幾行,您會發現,以前的文本被高亮了
三、而後鍵入:
,您將看到屏幕底部會出現 :'<,'> 。
四、如今請輸入 w TEST,其中 TEST 是一個未被使用的文件名。確認您看到了 :'<,'>w TEST 以後按 <回車> 鍵。
五、這時 Vim 會把選中的行寫入到以 TEST 命名的文件中去。使用 :!dir
或 :!ls
確認文件被正確保存。此次先別刪除它!咱們在下一講中會用到它
按 v 鍵使 Vim 進入可視模式進行選取。您能夠四處移動光標使選取區域變大或變小。接着您可使用一個操做符對選中文本進行操做。例如,按 d 鍵會刪除選中的文本內容。
要向當前文件中插入另外的文件的內容,請輸入 :r FILENAME
一、將光標移到新的一行
提示:步驟2以後您將看到第五講第三節的文字,請屆時往下移動以再次看到本講內容
二、接着經過命令 :r TEST 將前面建立的名爲 TEST 的文件提取進來。您所提取進來的文件將從光標所在位置處開始置入
三、爲了確認文件已經提取成功,移動光標回到原來的位置就能夠注意有兩份上一講的內容,一份是原始內容,另一份是來自文件的副本。
您還能夠讀取外部命令的輸出。例如, :r !ls 能夠讀取 ls 命令的輸出,並把它放置在光標下面。
輸入 o 將在光標的下方打開新的一行並進入插入模式。
o
,能夠打開新的一行並進入插入模式,您能夠寫入新的內容,寫入完成後按<ESC>
返回正常模式。輸入 a
將可在光標以後插入文本
輸入大寫的 R 可連續替換多個字符。
假若有以下兩個字符串
Adding 123 to xxx gives you xxx.
Adding 123 to 456 gives you 579.
xxx
處,而後鍵入R
,進行連續的輸入,知道內容與第二句類似,按ESC
進入正常模式,將光標移到下個xxx
處,重複上述操做,這樣上下兩個字符串就相等啦。使用操做符 y 複製文本,使用 p 粘貼文本
一、首先將光標移到要複製的內容開頭。
二、鍵入v
進入可視模式。
三、移動光標,將要複製的內容高亮
四、鍵入y
抽離文本
五、將光標移動到你但願複製的位置,鍵入p
粘貼
一、 要查找單詞 ignore 可在正常模式下輸入 /ignore <回車>
。要重複查找該詞,能夠重複按 n 鍵。
二、 而後設置 ic 選項(Ignore Case,忽略大小寫),請輸入: :set ic
三、 如今能夠經過鍵入 n 鍵再次查找單詞 ignore。注意到 Ignore 和 IGNORE 如今也被找到了。
四、 而後設置 hlsearch 和 incsearch 這兩個選項,請輸入: :set hls is
五、 如今能夠再次輸入查找命令,看看會有什麼效果:/ignore <回車>
六、 要禁用忽略大小寫,請輸入: :set noic
提示:要移除匹配項的高亮顯示,請輸入: :nohlsearch 提示:若是您想要僅在一次查找時忽略字母大小寫,您可使用 \c:/ignore\c <回車>
Vim 擁有一個細緻全面的在線幫助系統。要啓動該幫助系統,請選擇以下三種方法之一:
<HELP>
鍵 (若是鍵盤上有的話)<F1>
鍵 (若是鍵盤上有的話):help <回車>
請閱讀幫助窗口中的文字以瞭解幫助是如何工做的。
輸入 CTRL-W CTRL-W 可使您在窗口之間跳轉。
輸入 :q <回車> 能夠關閉幫助窗口。
提供一個正確的參數給":help"命令,您能夠找到關於該主題的幫助。請試驗如下參數(可別忘了按回車鍵哦):
:help w
:help c_CTRL-D
:help insert-index
:help user-manual
複製代碼
Vim 的功能特性要比 Vi 多得多,但其中大部分都沒有缺省啓用。爲了使用更多的特性,您得建立一個 vimrc 文件。
一、 開始編輯 vimrc 文件,具體命令取決於您所使用的操做系統:
:edit ~/.vimrc // 這是 Unix 系統所使用的命令
:edit $VIM/_vimrc // 這是 MS-Windows 系統所使用的命令
複製代碼
二、 接着讀取 vimrc 示例文件的內容:
:r $VIMRUNTIME/vimrc_example.vim
複製代碼
三、 保存文件,命令爲: :write
下次您啓動 Vim 時,編輯器就會有了語法高亮的功能。您能夠把您喜歡的各類設置添加到這個 vimrc 文件中。要了解更多信息請輸入 :help vimrc-intro
一、 輸入 :help
或者按 <F1>
鍵或 <Help>
鍵能夠打開幫助窗口。
二、 輸入 :help cmd
能夠找到關於 cmd 命令的幫助。
三、 輸入 CTRL-W CTRL-W
可使您在窗口之間跳轉。
四、 輸入 :q
以關閉幫助窗口
五、 您能夠建立一個 vimrc 啓動腳本文件用來保存您偏好的設置。
六、 當輸入 : 命令時,按 CTRL-D 能夠查看可能的補全結果。 按 <TAB>
可使用一個補全。
相信學會了vim,你的編程效率能更上一層樓,夢想仍是要有的,趁還年輕。