轉載:http://blog.csdn.net/yzhy_ocean/article/details/7272222vim
自從前幾天接觸了Macintosh Lion終端裏的Vim後,我便決定深刻了解並掌握這個幾乎和計算機自己歷史同樣悠久的被稱爲最強文本編輯器的軟件,至於究竟是不是最強的我尚未資格去說這個問題,可是將它排在編輯器的前3位估計沒有人會反對。我選擇學習這格編輯器有幾點緣由:編輯器
Vim有很是繁多而且強大的命令。學習
Vim能夠隨時隨地定製本身喜歡的、屬於本身的Vim。字體
Macintosh Lion下Vim配合其餘編譯器編寫程序很是地方便。好比Vim+gcc編C,Vim+JDK編Java。ui
昨天花了整整一天來配置個人Vim,在網上看了許多別人寫的關於配置Vim的文章,最後終於得到了小小的成功,同時將我看到的各類資料整理到這裏。編碼
提及配置Vim,首先要知道三個配置文件:vimrc,gvimrc和exrc。這些配置文件的位置油Vim的安裝位置和操做系統決定。spa
vimrc操作系統
vimrc是Vim最主要的配置文件,它有兩個版本:全局版本(global)和用戶版本(personal)。全局vimrc文件在Vim的安裝目錄中,個人電腦是Mac,因此其路徑是.net
/usr/share/vim/vimrc命令行
假如你不知道全局vimrc的位置,能夠打開Vim,在普通模式(Normal)下輸入下面的命令獲得它的位置:
echo $VIM(注意大小寫)
用戶版本的vimrc文件在當前用戶的主目錄下,主目錄的位置依賴於操做系統。Mac下的用戶vimrc文件路徑爲:
/Users/用戶名/.vimrc(文件名前面的」.」表明這個文件是隱藏文件)
你能夠在Vim的普通模式下輸入下面的命令,查找用戶主目錄的位置:
:echo $HOME
可是Mac下默認是沒有用戶vimrc的,因此須要你本身建立一個。
無論怎麼改用戶版的vimrc文件,其中的內容都是是覆蓋在全局vimrc文件中設置的內容,這就意味着你能夠不須要去改變全局vimrc文件來進行配置vim,只須要修改用戶vimrc文件。
gvimrc
gvimrc文件是Gvim的配置文件,和vimrc很類似,而且是放在同一個目錄下的,也分爲全局版和用戶版。這個文件是用來設置只有Gvim才能使用的GUI設置。我感受Vim比Gvim好用,因此沒有管這個文件。
exrc
exrc文件是用做與vi或ex向後兼容的,它也和vimrc放在同一個目錄,固然也分全局版和用戶版。然而,除非你想用vi兼容的模式來使用Vim,不然你更本不會用到這個文件。固然通常人都不會用vi兼容模式來使用Vim的。
而後是配置本身喜歡的Vim。
首先建立用戶版vimrc(Mac下默認是沒有的),你能夠在用戶主目錄下本身建立一個空的用戶版vimrc文件:
mkdir ~/.vimrc
也能夠將全局版vimrc文件複製到用戶主目錄下作爲用戶版vimrc:
cp /usr/share/vim/vimrc ~/.vimrc
這裏說明一下,~/就是用戶主目錄,至關於/Users/用戶名/。
通常推薦後一種作法。
接下來打開用戶vimrc文件並在裏面添加各類Vim命令。將個人Vim文件複製到下面:
" Configuration file for vim
set modelines=0" CVE-2007-2438
" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible" Use Vim defaults instead of 100% vi compatibility
set backspace=2" more powerful backspacing
syntax on
" 語法高亮
autocmd InsertLeave * se nocul
autocmd InsertEnter * se cul
" 用淺色高亮當前行
set smartindent
" 智能對齊
set autoindent
" 自動對齊
set confirm
" 在處理未保存或只讀文件的時候,彈出確認
set tabstop=4
" Tab鍵的寬度
set softtabstop=4
set shiftwidth=4
" 統一縮進爲4
set noexpandtab
" 不要用空格代替製表符
set number
" 顯示行號
set history=50
" 歷史紀錄數
set hlsearch
set incsearch
" 搜索逐字符高亮
set gdefault
" 行內替換
set encoding=utf-8
set fileencodings=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf-16,big5,euc-jp,latin1
" 編碼設置
colorscheme torte
" 設置顏色主題
"set guifont=Menlo:h16:cANSI
" 設置字體
set langmenu=zn_CN.UTF-8
set helplang=cn
" 語言設置
set cmdheight=2
" 命令行(在狀態行)的高度,默認爲1,這裏是2
set ruler
" 在編輯過程當中,在右下角顯示光標位置的狀態行
set laststatus=2
" 老是顯示狀態行
set showcmd
" 在狀態行顯示目前所執行的命令,未完成的指令片斷亦會顯示出來
set scrolloff=3
" 光標移動到buffer的頂部和底部時保持3行距離
set showmatch
" 高亮顯示對應的括號
set matchtime=5
" 對應括號高亮的時間(單位是十分之一秒)
set autowrite
" 在切換buffer時自動保存當前文件
set wildmenu
" 加強模式中的命令行自動完成操做
set linespace=2
" 字符間插入的像素行數目
set whichwrap=b,s,<,>,[,]
" 開啓Normal或Visual模式下Backspace鍵,空格鍵,左方向鍵,右方向鍵,Insert或replace模式下左方向鍵,右方向鍵跳行的功能。
filetype plugin indent on
" 分爲三部分命令:file on, file plugin on, file indent on.分別表示自動識別文件類型,用文件類型腳本,使用縮進定義文件。
"==================自定義的鍵映射======================
vnoremap $1 <esc>`>a)<esc>`<i(<esc>
vnoremap $2 <esc>`>a]<esc>`<i[<esc>
vnoremap $3 <esc>`>a}<esc>`<i{<esc>
vnoremap $$ <esc>`>a"<esc>`<i"<esc>
vnoremap $q <esc>`>a'<esc>`<i'<esc>
vnoremap $e <esc>`>a"<esc>`<i"<esc>
" 括號自動生成
map <F7> :if exists("syntax_on") <BAR>
\ syntax off <BAR><CR>
\ else <BAR>
\syntax enable <BAR>
\ endif
" 單鍵<F7>控制syntax on/off。緣由是有時候顏色太多會妨礙閱讀。
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc
" <F5>編譯和運行C程序
map <F6> :call CompileRunGpp<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./<"
endfunc
" <F6>編譯和運行C++程序
" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup
「 後面的一行都是註釋,有的命令暫時用不到,因此也註釋掉了。
其中set backspace這一命令有兩種寫法:後面接數字或其餘屬性,
set backspace=0 等同於 set backspace= (Vi 兼容)
set backspace=1 等同於 set backspace=indent,eol
set backspace=2 等同於 set backspace=indent,eol,start
indent,eol,start這三項內容分別指定了Vim能夠刪除位於行首的空格,斷行,以及開始進入Insert模式以前的位置(即之前編輯過的位置)。
部分效果以下圖:
不得不說vim-handbook-cn-71實在是一本學習Vim必不可少的書,很是全面地介紹了Vim地各類用法。