Emacs和Vim都是程序員專用編輯器,Emacs被稱爲神的編輯器,Vim則是編輯器之神。至於二者到底哪一個更好用,網絡上兩大派系至今還爭論不休。不過,相比之下,Emacs更加複雜,已經不能算是一個編輯器了,有人這麼說:Emacs是假裝成編輯器的操做系統。與之相反,Vim的定位很明確,就是要作一個強大的編輯器。因爲筆者精力有限,決定仍是選擇本身認爲相對簡單點的Vim來學習。所以,筆者將會在本文跟你們介紹Mac下Vim的安裝以及簡單使用。
首先,Mac系統默認已經安裝了Vim。打開終端,輸入vim,回車。可看到以下界面,即表示Vim已經安裝了。在vim裏輸入":q"javascript
在終端上,界面很是之簡潔,若是你須要更加複雜的界面以及使用Vim更多的特性,須要下載客戶端安裝。在Mac上目前存在兩個版本的Vim客戶端:
一、MacVim。使用Cocoa GUI,這是Mac上更新還很活躍的版本,也是Mac上最多人使用的版本。下載地址:http://code.google.com/p/macvim/
二、使用Carbon GUI的版本,可是這個版本目前基本上再也不更新。下載地址:http://sourceforge.net/projects/macosxvim/files/css
本文主要介紹MacVim,MacVim支持多窗口標籤編輯以及全屏等新特性。下載了相應MacVim壓縮包,解壓之後將MacVim.app拖入/Applications目錄下。啓動MacVim,輸入":h mvim", 按照提示,須要將mvim腳本文件拷貝到"/usr/local/bin"目錄下。打開終端,輸入命令 "cd /usr/local"以及"sudo mkdir bin",最後輸入"sudo cp -f /Users/ericli/SoftWare/MacVim-snapshot-66/mvim /usr/local/bin/",這樣就能夠在終端輸入命令"mvim"來快速啓動MacVim 。若是你不想將MacVim.app放到/Applications目錄下,只須要在終端設置VIM_APP_DIR變量爲你想放置MacVim.app的目錄並導入到$HOME/.bash_profile中便可,好比:export VIM_APP_DIR=$HOME/SoftWare/MacVim-snapshot-66/。在MacVim輸入":h macvim",能夠查看MacVim的使用幫助介紹文檔。html
如今MacVime的界面仍是很簡陋,下面開始介紹如何簡單配置MacVim:java
一、建立~/.bashrc文件linux
在終端鍵入"cd $HOME" 和「touch .bashrc」,即建立成功。打開文件,輸入「alias vim=mvim」,並保存別名變量。而後再在終端鍵入「source .bashrc」使.bashrc文件生效。這樣,在終端輸入vim和mvim均可以啓動MacVim.app了。c++
在這裏稍微解釋下幾個文件的做用,/etc/bashrc、/etc/profile是系統全局環境變量設置,給全部用戶使用,~/.bashrc、~/.bash_profile、~/.bash_login、~/.profile是用戶目錄下的私有變量設置。當進入系統運行一個bash shell進程時,讀取環境設定過程以下:一、讀取全局環境變量設置/etc/profile,而後根據其內容讀取/etc/profile.d、/etc/bashrc等設定,可是注意/etc/profile只在第一次運行bash shell時讀取一次,而/etc/bashrc在每次運行bash shell都讀取;二、而後讀取當前用戶目錄下的~/.bash_profile、~/.bash_login或~/.profile三個中的其中一個文件的局部變量設置,並且只在第一次運行bash shell時讀取,只有讀取~/.bash_profile失敗纔會讀取~/.bash_login,若是前邊兩文件讀取失敗纔會讀取~/.profile;三、最後根據~/.bash_profile的內容讀取當前用戶目錄下的~/.bashrc文件中的局部環境變量設置,~/.bashrc文件在每次打開新的bash shell都讀取一次。總結一下,/etc/bashrc、/etc/profile、~/.bashrc、~/.bash_profile、~/.bash_login、~/.profile都能設置環境變量,而/etc/profile、~/.bash_profile、~/.bash_login、~/.profile能夠設定路徑、環境變量等,只能登入的時候執行一次;/etc/bashrc、~/.bashrc保存路徑、命令別名等,每次打開新的bash shell都會執行一次,一般前者/etc/profile、~/.bash_profile調用後者/etc/bashrc、~/.bashrc。更詳細的資料能夠參考該連接:http://blog.chinaunix.net/uid-24591881-id-2124780.html 。git
2.配置~/.vimrc和~/.gvimrc程序員
首先,在MacVim編輯器中輸入「:version」,看到以下圖示信息:github
從上圖能夠看出一些MacVim的配置信息:shell
$VIM系統變量的路徑爲:"/Applications/MacVim.app/Contents/Resources/vim"
MacVim的系統配置文件vimrc的路徑:「$VIM/vimrc」
用戶配置文件vimrc的路徑:"$HOME/.vimrc"
MacVim編輯器的用戶初始化配置文件的路徑:"$HOME/.exrc" (默認不存在,若是須要使用則在終端輸入 「touch $HOME/.vimrc」建立)
MacVim的系統配置文件gvimrc的路徑:"$VIM/gvimrc"
用戶配置文件gvimrc的路徑:"$HOME/.gvimrc"
MacVim的菜單文件的路徑:"$VIMRUNTIME/menu.vim"
另外解釋下, $HOME爲當前用戶目錄的路徑,$VIMRUNTIME路徑爲"/Applications/MacVim.app/Contents/Resources/vim" . 能夠在MacVim中輸入」:echo $VIMRUNTIME「來查看這些系統變量的路徑。
其次,從系統文件vimrc_example.vim和gvimrc_example.vim中copy標準的內容,保存到用戶的配置文件~/.vimrc和~/.gvimrc中。在MacVim中輸入以下命令:
三、添加插件
一般有以下兩種方式添加插件:
其一:拷貝該 plugin_name.vim插件到你我的插件目錄~/.vim/plugin/下,拷貝plugin_help.txt到你我的文檔目錄~/.vim/doc/下,若存在該插件syntax的vim支持文件則放到~/.vim/syntax/目錄下,若是以上目錄不存在到終端輸入以下命令建立:
好比,拷貝matchit.txt到~/.vim/doc/下,拷貝matchit.vim到目錄~/.vim/plugin/下,
其二,在你的vimrc配置文件最後加一行命令:
最後,還有一種不經常使用的方式能夠安裝插件,將插件、文檔、syntax支持文件分別放到$VIMRUNTIME/plugin/ 、$VIMRUNTIME/doc/、$VIMRUNTIME/syntax/三個目錄下,或者/usr/share/vim/vim73/plugin/、/usr/share/vim/vim73/doc/、/usr/share/vim/vim73/syntax三個目錄下均可以使MacVim自動加載插件。
以上安裝插件的方法都比較麻煩,而且每一個插件的文件分散到幾個文件夾去,不方便管理。在這裏給各位推薦一個很方便管理插件的Vim插件vundle:https://github.com/gmarik/vundle。vundle可使得安裝的插件的文件都放到同一個目錄下,而且簡單設置就可以使用。安裝方法以下:
首先,在終端輸入以下命令:
而後,在~/.vimrc裏寫入如下配置:
最後,登錄MacVim,運行:BundleInstall命令。這樣,Vundle.vim管理插件就安裝成功。接下來繼續簡單介紹下,Vundle插件的使用:
搜索新的插件:
安裝新的插件:
最後在~/.vimrc中的註釋" vim-scripts repos下,加入以下命令並保存.vimrc文件,這樣一個插件就安裝成功了:
更新全部安裝的插件(這個命令會根據~/.vimrc的Bundle 設置來更新插件):
列出全部安裝的插件列表:
清除插件命名(這個命令我測試有些插件刪除不了,手動刪除~/.vim/bundle的相關插件的目錄,並將~/.vimrc中的相關配置去掉便可):
上述中的Tabular插件是用於編碼中的字符對齊的,關於其具體用法見連接:https://github.com/godlygeek/tabular.用法是選定一段文本,而後輸入相應的命令來根據相應的字符對齊。幾個經常使用的命令以下:
分別是選定文本按=、:、:\zs、|等符號對齊。
推薦一些插件:
NERD_tree : 一個文件管理插件,一些經常使用命令: 打開一個目錄樹( :NERDTree <啓動目錄> | <bookmark> ) 關閉目錄樹欄(:NERDTreeClose);切換目錄樹欄(:NERDTreeToggle); 定義標籤(:Bookmark <name>);定義Root標籤(:BookmarkToRoot <bookmark>)。。。。。。更多命令和用法見 :help NERD_tree。
word_complete :代碼自動補全
SuperTab :省去Ctrl-n或Ctrl-p快捷鍵,經過按tab鍵快速顯示補全代碼.
xptemplate : 快速自動完成一些if、switch、for、while結構模板代碼,支持c、c++、Lua、Ruby、Php、html、css、javascript等多種語言。通常是輸入結構體的關鍵字後,再按Ctrl-\組合鍵便可完成代碼補全,而後按Tab鍵跳轉到不一樣的位置替換模板內容。好比:輸入for後按Ctrl-\組合鍵便可快速完成for結構的模板代碼。
ctags : 一個掃描記錄代碼的語法元素,並記錄爲tag,方便代碼定位跳轉等操做,MacVim自帶,可是聽說有點問題,筆者用Vundle安裝的貌似也有問題,推薦用MacPorts安裝,而後在~/.gvimrc配置中加入: let Tlist_Ctags_Cmd="/opt/local/bin/ctags"。用法:在終端 cd 進入到你的項目根目錄,輸入語句便可將項目全部代碼文件打上tag:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q .
taglist : 能夠用Vundle安裝,在編輯代碼文件時,輸入命令":TlistToggle"在右邊就會出現當前類的函數或變量列表。輸入命令「:tag <函數名或變量、類>」,若是隻有一個文件定義了該函數或變量、類,vim打開該文件並將光標定位到對應的位置;若是多個文件有這個函數名或變量、類的tag,將給提示,並可輸入「:tselect」 ,顯示可選的文件。快捷鍵跳轉Ctrl+],Ctrl-o。
Cscope :功能跟ctags差很少,不過更增強大,MacVim默認已經支持,輸入「:version」命令查看.
OmniCppComplete : 功能跟taglist差很少。
a.vim :在.cpp文件和.h頭文件間快速切換的插件。
grep.vim : 在工程中查找詞彙的插件。
minibufexplorerpp : 操做緩存buffer窗口。
quickfix :MacVim內置安裝好了,不須要從新安裝。顯示一些命令查詢結果以及編譯錯誤等信息。
Command-t :用Commad-t命令快速查找切換文件。若是是用Vundle安裝的話,還不能使用,在MacVim中輸入「:CommandT」命令會報錯。用Vundle安裝好打開終端,輸入以下命令,等待編譯完畢後就可使用了:
NERD_commenter.vim : 註釋插件。
DoxygenToolkit.vim : 用於快速生成註釋,並由註釋生成文檔。
winmanager : 能夠用Vundle安裝,管理窗口的插件,能夠跟NERD_tree、Taglist插件結合,打造一個相似IDE的界面。只須要在NERD_tree.vim中加入以下代碼:
而且在winmanager.vim的找到下面代碼,增長一句代碼:
最後在~/.gvimrc中加入以下配置:
重啓,便可看到一個相似IDE的Vim界面。
四、Vim的模式與一些經常使用命令
i、Vim的模式
Vim有三種模式,Normal 、Insert 、 Visual。在Normal模式下,能夠輸入運行命令;在Insert模式下,能夠輸入編輯文本;在Visual模式下,能夠對選定的文本運行命令操做並該命令僅僅做用於選定文本。啓動Vim的默認模式是Normal模式,輸入 i、I、a、A、o、O、s、S、r、R能夠進入Insert模式,其中區別在於:
命令 | 區別 |
---|---|
i | 在光標以前插入字符 |
I | 在光標所在行的全部字符開頭以前插入字符 |
a | 在光標以後插入字符 |
A | 在光標所在行的全部字符以後插入字符 |
o | 在當前光標的下面打開新的一行 |
O | 在當前光標的上面打開新的一行 |
s | 刪除當前光標下的字符 |
S | 刪除當前光標所在行的全部字符 |
r | 用新輸入的字符替換當前光標所在字符,而後當即返回Normal模式 |
R | 在當前光標位置所在字符開始日後一直用新輸入的字符替換全部原有字符 |
在Nomal模式中輸入v進入Visual模式。 在Insert模式或Visual模式中按Esc鍵即返回Normal模式。
ii、VIm的經常使用命令(不作特殊注釋的話,下面的命令通常在Normal模式生效,通常對文本操做的命令在Visual模式下也一樣生效)
(1)、光標的移動:
h(左)、j(下)、k(上)、l(右)移動光標。還能夠在命令以前輸入數字,指定要移動多少行。好比:7h表示左移7個光標,6j表示光標下移6行。
光標向前跳多個詞到達詞首,好比5個詞,輸入5w;光標向後跳7個詞到達詞首,輸入7b。跳到3個單詞後的詞末,輸入3e;跳到3個單詞前的詞末,輸入3ge。
移動到行首第一個非空字符,輸入"^"或按Home鍵;移動到光標所在行的第一個字符(包括空格);移動到行尾,輸入"$"或按End鍵。注意,這個只有"$"或按End鍵以前加數字會生效。
向前移動到某個指定的字符,好比向前找第三個「h」,輸入」3fh「;向前把光標移動到第四個"b"字符的前一個字符上,輸入」4tb「。向後移動到某個指定的字符,好比向後查找第三個」h「,輸入」3Fh「;向後把光標移動到第四個」b「的後一個字符上,輸入」4Tb「。這四個命令均可以使用」;「命令重複,","命令反向重複。光標不會移出當前行。
"%"命令能夠將當前光標所在的括弧移動到匹配的括弧的位置,好比:從」)「移動到」(「,反之亦然。
gd命令到達光標所在處函數或變量定義之處。
」*「和」#「命令匹配當前光標所在單詞, 」*「移動光標的下一個匹配單詞,而」#「命令是移動光標到上一個匹配單詞。
移動到指定行,好比想移動到第30行,輸入30G或輸入30gg。沒有數字限制的話,G命令將光標移動到文件的尾部,gg命令移動光標到文件開始。
移動都某部分,好比到文件大約10%的行位置,輸入」10%「。
H命令移動光標到視野內的第一行,M移動到視野內的中部,L移動光標到視野內的最後一行。
肯定光標的位置,輸入Ctrl-G命令。
Ctrl-u命令光標向上移動半屏,Ctrl-d光標向下移動半屏。
Ctrl-e上滾一行,Ctrl-y下滾一行。
Ctrl-f光標向前移動一整屏,Ctrl-b光標向後移動一整屏。
」zt「命令將光標所在行移動到屏幕的頂部,」zz「命令將光標所在行移動到屏幕的中部,」zb「將光標移動到屏幕的底部。
(2)、刪除字符:
刪除某個字符,移動光標到所在字符,而後輸入x或dl(光標下的字符)、X或dh(光標籤的字符);刪除多個字符,能夠在x以前加數字;
刪除從當前光標到所在行上指定的某個字符之間的全部字符(包括該指定字符)
刪除某行,移動光標到所在行,而後輸入dd;
刪除換行符將兩行連起來,光標移動到要合併的兩行的第一行,而後輸入J。
利用命令組合模式,操做符-動做。d命令後跟一個光標移動動做,將刪除從當前位置到光標移動到的目標位置的所有內容。例如:刪除從當前光標向前的5個單詞,命令爲d5w;刪除從當前光標位置到行尾的字符,命令爲d$。
db表示從當前位置刪除到前一個單詞的開頭。diw表示刪除光標上的單詞(不包括空格)。daw表示刪除光標上的單詞(包括空格)。
從當前光標位置上的字符一直刪除到指定的字符(包括指定字符),用df命令,好比,刪除到r,命令爲dfr。從當前光標位置刪除到指定字符的前一個字符,用dt命令,好比:dtr。
dG 表示從當前光標位置一直刪除到文件的末尾。dgg表示從當前光標位置一直刪除到文件的開始。
(3)、修改字符:
修改字符的操做命令是c。做用是刪除字符後自動切換到Insert模式,比刪除操做命令多了一個切換到Insert模式的功能。
修改光標下的 字符,cl.
修改光標前的字符,ch.
修改當前光標後的3個詞,組合命令是c3w。
修改當前光標以前的單詞,cb.
修改光標上的單詞,不包括空格,ciw。
修改光標上的單詞,包括空格,caw。
修改到指定字符(包括指定字符),好比修改到e,命令爲cfe。
修改到指定字符以前一個字符,好比,修改到e以前的字符,cte.
修改光標所在行一整行,cc。
從當前光標位置修改到行尾,c$。
cG,修改到文件的末尾。
cgg,修改到文件的開頭。
(4)、替換字符
r命令是進入Insert模式的命令之一,進入Insert模式等待你輸入一個字符替換當前光標上的字符後自動返回Normal模式。
在r命令以前加入數字前綴,能夠用一個字符替換當前光標後的多個字符。好比:3rp。可是例外的是,若是替換的字符是回車鍵,則只會用一個換行符替換多個字符。
使用R命令啓動Replace模式, 這個模式下在當前光標位置所在字符開始日後一直能夠持續用新輸入的字符替換全部原有字符,直到你退出Replace模式。在這個模式下,使用退格鍵Backspace,原來被替換的字符會恢復。
(5)、查詢字符:
從當前光標位置向前查找當前行上的某個指定字符的第一個字符,命令是f。好比: 查找w,fw。F也和f命令同樣,可是查找方向相反。
從當前光標位置向前查找當前行上的某個指定字符的前一個字符,命令是t。好比: 查找o以前的字符,to。T也和t命令同樣,可是查找方向相反。
向前查找字符單詞命令, 」/「後加上想查找的字符單詞。好比:」/a「 就是查找字符」a「。想要向前查找當前光標後第三個匹配的a,還須要輸入」3n「命令。向後第三個則輸入」3N「。
向後查找字符,」?「後加上想查找的字符。想要向前查找光標後第三個匹配的字符,還需輸入」3N「。向後第三個則輸入」3n「。
查找字符一般區分大小寫的,若是不想區分大小寫,可在~/.vimrc文件中加入命令"set ignorecase"命令。
還能夠將光標移動要查找的單詞上,而後輸入」*「命令,這樣將取得當前光標上的單詞並向前查找該單詞。想要向前查找光標後第2個單詞,能夠輸入"2*"。
向後查找當前光標上的單詞,則能夠輸入」#「。想要向後查找當前光標的第2個單詞,能夠輸入」2#「。
輸入」/di「,也可能查找到單詞」media「。若是想限定di只匹配單詞開頭,能夠輸入」/<di「。若是隻想查找以di結尾的單詞,則能夠輸入」/di>「。若是隻想查找完整的單詞"di",輸入」/<di>「。注意,」*「和」#「命令也是匹配整個單詞查找的,若是想要部分匹配,輸入」g*「和」g#「。
"/^di",只匹配行首。"/di$"只匹配行未。」/^di$「僅僅匹配包括」di「的行並不帶空格。
」/d.i「只匹配第一個字符是」d「,第二個字符是任意字符,第三個字符是」i「的字符串。
」/di/.「匹配帶特殊字符」.「的字符串」di.「。
(6)、複製字符
使用d、x或其它命令刪除文本的時候,這些被刪除的文字將會被Vim緩存起來。可使用p命令將該被刪除的文本在當前光標的前面(好比前一行)從新粘貼出來。
使用y(yank:抽出)操做符命令可直接把文字拷貝到寄存器中,而後用p命令粘貼到其餘地方。好比:拷貝4個單詞,4yw(包括了單詞後面的空格,用ye則不包括單詞後的空格)。
yl拷貝當前光標下的字符,yh拷貝當前光標以前的字符。
yw拷貝當前光標到下一個單詞的開頭,yb拷貝當前光標到上一個單詞的開頭。yiw,拷貝光標上的單詞(不包括空格)。yaw,拷貝光標上的單詞(包括空格)。
y$拷貝到行尾。
yy命令拷貝一整行,快捷方式爲Y。
yG,拷貝到文件的末尾。
ygg,拷貝到文件的開頭。
(7)、文本對象
當處於某個單詞或句子的中間,而又想刪除整個單詞或句子時,可使用文本對象。好比:diw能夠刪除一整個單詞(iw表示Inner word,不包括單詞後的空格),若是想要包含單詞後的空格也刪除,可用命令daw。一樣地,cis表示修改一整個句子(is表示Inner Sentence,不包括句子後的空格),若是想要包含句子後的空格也修改,則用命令cas。
一樣地,在Visual模式下,也能夠用文本對象命令來選中更多的文本。好比使用aw選中當前的整個單詞,再次使用則選中多一個單詞。
文本對象的表達式:<操做命令>a<文本對象>或<操做命令>i<文本對象>,操做命令能夠是任何命令,如d,y,c;文本對象能夠是一個單詞w,一個句子s,一個段落p,也能夠是一個特殊的字符:"、'、)、}、]。
使用 :help text-objects 能夠在幫助裏查看更多的文本對象的更多命令內容。
使用:help operator 能夠在幫助裏查看更多的操做符命令內容。
(8)、撤銷與重作:
撤銷上一個編輯操做,輸入u;撤銷全部在前一個編輯行上的操做,輸入U;重作,輸入Ctrl+r。
"."命令表示重複最後一次除u命令、Ctrl-r命令和冒號命令以外的任何操做命令。
(9)、查找命令
輸入"/"、」?「、」:"後,按方向鍵上箭頭或下箭頭,能夠查找一樣的歷史命令記錄。
(10)、命令次數:
能夠在不少命令以前加上數字,表示執行該命令的次數。
在組合命令的中,數字能夠放在不一樣的地方。好比:修改5個單詞,5cw和c5w都同樣;刪除10個單詞,能夠寫成10cw、c10w,或者2c5w、5c2w。其中的差異在於數字修飾的命令不同,可是做用是同樣的。
(11)、退出:
保存文件並退出,輸入ZZ或":wq"或「:x」;放棄修改並退出,輸入「:q!」;強制退出全部打開的文件,輸入「:qa!」
(12)、放棄執行命令:
Esc按鍵能夠終止大部分命令。
(13)、幫助:
輸入「:help」進入幫助窗口;輸入ZZ,退出幫助窗口。
要得到具體的幫助,好比關於u命令的幫助,輸入相似「:help u」。
默認顯示Normal模式的幫助,要顯示其餘模式的命令,可使用「i_」前綴。
獲取命令參數的幫助,好比:「:help -e」.
使用「:helptags ~/.vim/doc」 命令產生插件的本地tags文件,從而能夠在幫助中查詢插件的文檔。
(14)、標籤跳轉:
被 [ ]包起來的文字是一個標籤連接,光標移動到 [ ]之間,按Ctrl+]組合鍵跳轉到標籤連接的地方。Ctrl+t或 Ctrl + O跳回前一個標籤。
使用G命令或者」n「命令或者查找」/「命令跳到其餘行後,Vim會記錄下你跳過來的地方,使用兩個單引號('')便可跳回原來的地方;或者使用Ctrl-o命令跳到較舊的地方;Ctrl-i命令或Tab鍵跳到較新的地方。輸入":jumps"命令能夠看到光標跳轉的位置列表信息。
使用」m「命令標記當前光標的位置,位置的名稱只能爲a~z的單個字母(區分大小寫)。好比:定義當前光標的位置爲」E「,命令爲"mE"。設置後能夠經過單引號'+光標名稱,或者上句號`+光標名稱能夠跳到指定的光標位置,區別是單引號 ’E命令跳轉到標記光標位置所在行的首個非空字符(列的位置跟標記的時候不一樣),而上句號 `E跳轉到標記的光標原來位置(包括行和列的位置都跟標記的時候同樣)。輸入」:marks「命令能夠查看全部帶名稱的標記信息列表,其中有幾個特殊的標記。好比:單引號 ' ,表示跳轉前的位置。雙引號 "表示Normal模式最後編輯的位置。中括號 [表示文件第一行的第一列。中括號 ]表示文件最後一行的第一列。 ^表示Insert模式下最後修改的位置。 . 表示無論是Insert模式或Normal模式最後修改的位置的開頭。
(15)、顯示Vim相關的文件路徑
:scriptnames命令能夠查找~/.vimrc或~/.gvimrc或插件等文件的路徑。
(16)、在vim中打開編輯文件命令:
保存文件:
另存爲:
當同時打開多個文件,在多個文件間切換命令:
(17)、Visual模式
以前介紹過,在Normal模式下,輸入v,進入Visual模式。這樣,你對光標做任何移動操做,從當前光標位置到移動到的位置之間的文本都會高亮,此時輸入操做命令,好比刪除命令d,則高亮部分文本會被刪除。
在Visual模式下光標的移動操做跟Normal模式差很少。注意,在Visual模式下,"o"命令表示返回到選中文字的另外一端,這跟Normal模式不一樣。
(18)、快捷鍵與一些經常使用的命令:
一些常用的組合命令,存在等價的快捷單字符命令:
dl 的等價快捷鍵爲 x,做用刪除當前光標下的字符。
dh的等價快捷鍵爲 X,做用刪除光標左邊的字符。
d$的等價快捷鍵爲D,做用刪除到行尾。
cl的等價快捷鍵爲s,做用修改當前光標的字符。
cc的等價快捷鍵爲S,做用修改一整行。
c$的等價快捷鍵爲C, 做用修改到行尾。
yy的等價快捷鍵爲Y,做用拷貝一整行。
一些經常使用的命令的以下:
c 修改操做命令
d 刪除操做命令
y 複製到寄存器的操做命令
~ 修改選中的字符的大小寫,原來大寫的轉換成小寫,原來小寫的轉成大寫。在Visual模式和Normal模式下都能生效。 注意,只有tiledeop設置後,這個才能成爲一個操做命令,纔可用該命令與其餘光標移動的命令組合使用。
g~ 修改選中的字符的大小寫操做命令,原來大寫的轉換成小寫,原來小寫的轉成大寫。
gu 修改選中的字符爲小寫操做命令。
gU 修改選中的字符爲大寫操做命令。
! 過濾警告操做命令
gq 選中文本格式化,文本拼接組合成句子或段落命令。在Normal模式和Visual模式下都能生效。
> 選中文本向右Tab縮進。在Normal模式和Visual模式下都能生效。
< 選中文本向左Tab縮進。在Normal模式和Visual模式下都能生效。
gd 到達光標所在處函數或變量定義之處。
塊操做命令過程: 移動到想要進行操做的位置,好比行首或行尾;按組合鍵Ctrl-v,進入塊操做模式;移動光標到任何地方,選定塊操做的範圍,好比:hjkl命令;最後輸入I(在塊的每一行首插入字符)或A(塊的每一行尾部插入)進入Insert模式,而後輸入想要插入的字符,按Esc鍵使塊的每一行一樣的位置生效。
自動補全功能:在Insert模式下,輸入一個詞的開頭,而後按組合鍵Ctrl-n或Ctrl-p,就出現自動補全的提示。
宏錄製:q + <宏> + 操做隊列 + q ,@<宏> , @@。<宏> 能夠是任意單個字母(區分大小寫)或任意單個數字, q<宏> 進入recording模式,該模式下你的操做記錄會保存到寄存器<宏> 中;而後輸入@<宏>操做命令將從新執行被記錄到寄存器<宏>中的命令;@@命令跟@<宏>的做用同樣。
可視化選擇:v,V,Ctrl-v. v,V均可以進入Visual模式,而Ctrl-v能夠進入Visual Block模式(即塊操做模式),在這兩個模式下,均可以移動光標選定編輯文本。對選定文本執行c,y,d等操做,下面有幾個經常使用的對選定文本的操做:
(19)菜單快捷鍵
編輯菜單:
Undo 快捷鍵 command+z
Redo 快捷鍵 shift+command+z
Cut 快捷鍵 command+x (剪切的文本能夠粘貼於其餘程序或vim)
Copy 快捷鍵 command+c (複製的文本能夠粘貼於其餘程序或vim)
Paste 快捷鍵 command+v
Select All 快捷鍵 command+a
文件菜單:
New window 快捷鍵 Command+n
New Tab 快捷鍵 Command+t
Open New File 快捷鍵愛你 Command+o
Save 快捷鍵 Command+s
Save as 快捷鍵 shifit+Command+s
Close window 快捷鍵 Shift+Command+w
Close 快捷鍵 Command+w
五、最後貼出本人的~/.vimrc和~/.gvimrc配置:
~/.vimrc配置以下:
~/.gvimrc配置以下:
本文蜻蜓點水地帶領你們快速瀏覽了MacVIm的一些基本功能,也至關於筆者的一個學習總結。實際上,上邊談到的每個內容均可以獨立寫成一篇博客來介紹,對於Vim的更多具體用法還須要去進行更深刻的學習。寫這篇文章,筆者參考了不少資料,在這裏羅列一些出來供讀者參考。
參考資料:
將Vim改造爲強大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有圖有真相)