vim是一款功能強大、支持各類插件、配置極爲靈活的編輯器,且支持多種主流OS(linux、Unix、mac、windows),可用來各類編程預言的coding和文件編輯,用習慣了vim,你會體會到它是如此的高效和便捷。引用官網(www.vim.org)上vim的自我介紹說:javascript
「Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.Vim is often called a "programmer's editor," and so useful for programming that many consider it an entire IDE. It's not just for programmers, though. Vim is perfect for all kinds of text editing, from composing email to editing configuration files. Despite what the above comic suggests, Vim can be configured to work in a very simple (Notepad-like) way, called evim or Easy Vim.」php
本文主要經過一些示例介紹下如何定製本身專屬的基於vim的IDE編程環境(主要針對c/c++,其餘語言亦可採用相同的思路)。下面咱們就一步一步來介紹,一磚一瓦從零開始建造咱們基於VIM的友好的IDE環境。css
能夠嘗試:http://www.cnblogs.com/highway-9/p/5984285.htmlhtml
直接shell中輸入以下命令:java
sudo apt-get install vim (ubuntu) yum install vim (redHat/Fedora/CentOS)
linux會自動檢測並下載安裝。apt-get 安裝出錯,點這裏。python
截止當前最新版本是7.4(vim-7.4.tar.bz2),可在windows環境下載好,拷貝至linux環境安裝,或直接linux命令行下載。這裏給出 linux直接下載並編譯安裝(如下均爲shell命令):
1). wget下載mysql
wget ftp://ftp.vim.org/ftp/pub/vim/unix/vim-7.4.tar.bz2
(或用ftp命令登錄ftp://ftp.vim.org,get命令獲取)linux
2). 解壓c++
bunzip2 vim-7.4.tar.bz2
3). 解壓正則表達式
tar xvf vim-7.4.tar
4). 進入vim74(解壓後的)目錄,執行
./configure --disable-selinux --enable-cscope
(./configure -help 查看後面參數選項的含義)
5). 編譯
make
6). 安裝
make install
只要不出現error即表明成功安裝,也可直接用vim命令來檢測,或whatis vim(whereis vim)查看。一般狀況下,許多發行版會默認安裝vim,則可省略上述步驟。
linux環境下vim的初始化配置文件爲.vimrc, 一般有兩個:系統版本和用戶版本,前者不一樣發行版linux會有不一樣,通常位於/etc/vimrc,是整個系統vim的默認配置;後者位於~/.vimrc,是當前用戶的vim配置,會覆蓋系統配置。關於vim的其餘配置參數文件位於/usr/local/share/vim/下,可進入vim,在命令模式下鍵入
:version (查看基本配置路徑)
:echo $VIM ( WINDOW用戶在次目錄下編輯文件_vimrc完成下面配置 )
:echo $HOME(查看具體路徑值)
~/.vimrc有時並不存在,此時用戶能夠創建一個.vimrc,放入主目錄以實現本身的vim配置。
vimrc一般用於指定vim的編輯參數和外觀環境。下面列出經常使用的命令參數及其含義:
"打開語法高亮 syntax on "使用配色方案 colorscheme desert "打開文件類型檢測功能 filetype on "不一樣文件類型採用不一樣縮進 filetype indent on "容許使用插件 filetype plugin on filetype plugin indent on "關閉vi模式 set nocp "與windows共享剪貼板 set clipboard+=unnamed "取消VI兼容,VI鍵盤模式不易用 set nocompatible "顯示行號, 或set number set nu "歷史命令保存行數 set history=100 "當文件被外部改變時自動讀取 set autoread "取消自動備份及產生swp文件 set nobackup set nowb set noswapfile "容許使用鼠標點擊定位 set mouse=a "容許區域選擇 set selection=exclusive set selectmode=mouse,key "高亮光標所在行 set cursorline "取消光標閃爍 set novisualbell "老是顯示狀態行 set laststatus=2 "狀態欄顯示當前執行的命令 set showcmd "標尺功能,顯示當前光標所在行列號 set ruler "設置命令行高度爲3 set cmdheight=3 "粘貼時保持格式 set paste "高亮顯示匹配的括號 set showmatch "在搜索的時候忽略大小寫 set ignorecase "高亮被搜索的句子 set hlsearch "在搜索時,輸入的詞句的逐字符高亮(相似firefox的搜索) set incsearch "繼承前一行的縮進方式,特別適用於多行註釋 set autoindent "爲C程序提供自動縮進 set smartindent "使用C樣式的縮進 set cindent "製表符爲4 set tabstop=4 "統一縮進爲4 set softtabstop=4 set shiftwidth=4 "容許使用退格鍵,或set backspace=2 set backspace=eol,start,indent set whichwrap+=<,>,h,l "取消換行 set nowrap "啓動的時候不顯示那個援助索馬里兒童的提示 set shortmess=atI "在被分割的窗口間顯示空白,便於閱讀 set fillchars=vert:\ ,stl:\ ,stlnc:\ "光標移動到buffer的頂部和底部時保持3行距離, 或set so=3 set scrolloff=3 "設定默認解碼 set fenc=utf-8 set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 "設定字體 set guifont=Courier_New:h11:cANSI set guifontwide=新宋體:h11:cGB2312 "設定編碼 set enc=utf-8 set fileencodings=ucs-bom,utf-8,chinese set langmenu=zh_CN.UTF-8 language message zh_CN.UTF-8 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim "自動補全 filetype plugin indent on set completeopt=longest,menu "自動補全命令時候使用菜單式匹配列表 set wildmenu autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete autocmd FileType python set omnifunc=pythoncomplete#Complete autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS autocmd FileType html set omnifunc=htmlcomplete#CompleteTags autocmd FileType css set omnifunc=csscomplete#CompleteCSS autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags autocmd FileType java set omnifunc=javacomplete#Complet
vim的配色分兩部分:編輯環境配色和文本區域配色
好比Vim編輯區的前景背景色、狀態欄顏色、錯誤提示顏色、查找、光標、圈選區、行號、摺疊等的顏色這裏列出幾個配色組名及其含義(所有的詳細信息查看幫助文件 :help hi 查找 "highlight-group" 便可):
Cursor 光標下的字符顏色
CursorLine 光標所在行顏色
ErrorMsg 命令行出現的錯誤信息提示
IncSearcg 被搜索字符的顏色
Normal 普通字符
Pmenu 彈出的提示條目顏色
PmenuSel 彈出的提示條目中被選中條目的顏色
SpellBad 拼寫錯誤字符顏色
Visual 可視化模式下選中字符的顏色
Menu 菜單欄的顏色字體
Scrollbar 滾動條的顏色
可編輯的文本區域的字符配色(詳細信息請執行 :help hi搜索 "*comment")
因爲配色種類較多,vim默認分了幾大類(幫助信息中帶*的):
*Comment 註釋 *Constant 常量 *statement 經常使用關鍵字標示符 *PrePoc 預處理符號 *Type 數據類型
下面是較爲詳細的組別:
String 字符串常量: "string abc\n" Character 單個字符常量: 'c', '\n' Number 數字常量: 234, 0xff Boolean 布爾常量: TRUE, false Function 函數名 Conditional 條件關鍵字: if, then, else, endif, switch, etc. Repeat 循環關鍵字: for, do, while, etc. Operator 操做符: "sizeof", "+", "*", etc. Exception 異常關鍵字: try, catch, throw
這樣即可以更爲詳細的爲每個組別進行配色。
查看當前的vim配色狀況
:hi/highlight
另外,文本區域的配色能夠關閉,但環境配色不能,一般vim給定的默承認選配色方案中同時包含了以上兩個方面。
下面就一條具體的配色命令(對數據類型配色)解釋每一個字段的含義:
hi Type cterm=none ctermbg=White ctermfg=Green guibg=Gray guifg=Red
hi: highlight的縮寫,配色命令
Type: 配色組名,能夠自定義(修改$VIMRUNTIME/syntax/下對應的文件可改變不一樣語言的高亮方案)其內容
cterm,ctermbg,ctermfg,guibg,guifg: 表明了不一樣顯示環境
White,Green: 表示顏色(也能夠用數字或者相似與html的16進制顏色表示方法)
顯示環境有三種:黑白終端,彩色終端,圖形界面,三種環境下參數名稱以下:
term attributes in a B&W terminal cterm attributes in a color terminal ctermfg foreground color in a color terminal ctermbg background color in a color terminal gui attributes in the GUI guifg foreground color in the GUI guibg background color in the GUI
其中term僅有黑白兩色,cterm下顏色較爲單一,GUI模式顏色豐富
若要僅修改某種語言(c、Java、pascal)的配色,則在配色組名前加語言名稱便可,好比對c/c++語言的數據類型單獨配色:
hi cType ctermfg=Blue
如果修改java/pascal的數據類型,則相應的將cType替換爲javaType/pascalType便可。
對於文本區域的語法高亮(即配色),咱們可根據需求特殊化定製,好比自定義組: myUniqueWord, mySymbol,使用syn/syntax命令
syn keyword myUniqueWord gang Gang swagger syn match mySymbol "[,.;(){}[]]" (可以使用正則表達式)
vim目前7.4版本給出的可直接使用(colorscheme命令加於.vimrc中便可)的配色方案位於目錄:/usr/local/share/vim/vim74/colors,好比使用desert.vim中的配色,則於.vimrc中添加一行
colorscheme desert
便可
網友提供的配色方案列表(帶效果圖),可參考:
http://vimcolorschemetest.googlecode.com/svn/html/index-c.html
http://www.oschina.net/news/32306/10-vim-color-schemes-you-need-to-own
hi/highlight
命令,可查看當前vim的顏色配置
:help hi/highlight
顯示幫助文件(syntax.txt,可訪問官方在線版http://vimdoc.sourceforge.net/htmldoc/syntax.html)內容,介紹了顏色配置腳本中關鍵字的含義和使用方法
相同配色vim腳本在不一樣的終端下可能顯示不太一致,這是由終端下顏色設置不一致致使的,屬正常狀況。
(基於autocomplpop + omnicppcomplete + ctags + taglist + cscope + NERDtree)
先一句話介紹每一個插件的用途:
--> ctags: 爲源碼的變量/對象、結構體/類、函數/接口、宏等產生索引,以便快速查找和定位
- Official site http://ctags.sourceforge.net/
- VIM online http://www.vim.org/scripts/script.php?script_id=610
--> taglist:提供源碼的結構化瀏覽功能
- Official site http://vim-taglist.sourceforge.net/
- VIM online http://www.vim.org/scripts/script.php?script_id=273
--> AutoComplPop:代碼補全提示自動彈出
- VIM online http://www.vim.org/scripts/script.php?script_id=1879
--> OmniCppComplete:基於ctags的索引文件提供全面的c++(類成員、繼承、this指針、.->訪問符等)的代碼補全功能
- VIM online http://www.vim.org/scripts/script.php?script_id=1520
--> cscope:對代碼產生索引數據庫,提供對象接口字符串的查找,並用列表顯示(:cw - quickfix)
- Official site http://cscope.sourceforge.net/
- VIM online http://www.vim.org/scripts/script.php?script_id=4082
--> NERDtree:以樹形結構顯示文件系統的目錄(同windows的資源管理器),並能夠在目錄間切換
- VIM online http://www.vim.org/scripts/script.PHP?script_id=1658
vim支持的幾乎全部plugin&&utility都在這裏能夠下載到(主要以vim腳本的形式)
http://www.vim.org/scripts/index.php
下面逐一介紹各個插件的安裝和使用方法
1) ctags
2) taglist
3) AutoComplPop
4) OmniCppComplete
5) cscope
6) NERDtree
(待續)
因爲後續各個插件的介紹篇幅較長,單獨造成博文,請參考:
ctags 的安裝和使用方法,請猛擊:http://blog.csdn.net/g_brightboy/article/details/16830395
taglist的安裝和使用方法,請猛擊:http://blog.csdn.net/g_brightboy/article/details/16843899
AutoComplPop和OmniCppComplete的安裝和使用方法,請用力敲鼠標左鍵:http://blog.csdn.net/g_brightboy/article/details/19498983