簡介
vim是什么
vim是一款功能強大、支持各種插件、配置極為靈活的編輯器,且支持多種主流OS(linux、Unix、mac、windows),可用來各種編程預言的coding和文件編輯,用習慣了vim,你會體會到它是如此的高效和便捷。引用官網(www.vim.org)上vim的自我介紹說:
“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.”
本文主要通過一些示例介紹下如何定制自己專屬的基於vim的IDE編程環境(主要針對c/c++,其他語言亦可采用相同的思路)。下面我們就一步一步來介紹,一磚一瓦從零開始建造我們基於VIM的友好的IDE環境。
vim的下載與安裝
可以嘗試:http://www.cnblogs.com/highway-9/p/5984285.html
1. 在線安裝
直接shell中輸入如下命令:
sudo apt-get install vim (ubuntu) yum install vim (redHat/Fedora/CentOS)
linux會自動檢測並下載安裝。apt-get 安裝出錯,點這里。
2 手動下載編譯安裝
截止當前最新版本是7.4(vim-7.4.tar.bz2),可在windows環境下載好,拷貝至linux環境安裝,或直接linux命令行下載。這里給出 linux直接下載並編譯安裝(以下均為shell命令):
1). wget下載
wget ftp://ftp.vim.org/ftp/pub/vim/unix/vim-7.4.tar.bz2
(或用ftp命令登陸ftp://ftp.vim.org,get命令獲取)
2). 解壓
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,則可省略上述步驟。
vim的初始化配置.vimrc
1. 存放位置
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配置。
2. 主要命令參數 .
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的配色分兩部分:編輯環境配色和文本區域配色
1) vim編輯環境配色:
比如Vim編輯區的前景背景色、狀態欄顏色、錯誤提示顏色、查找、光標、圈選區、行號、折疊等的顏色這里列出幾個配色組名及其含義(全部的詳細信息查看幫助文件 :help hi 查找 "highlight-group" 即可):
Cursor 光標下的字符顏色
CursorLine 光標所在行顏色
ErrorMsg 命令行出現的錯誤信息提示
IncSearcg 被搜索字符的顏色
Normal 普通字符
Pmenu 彈出的提示條目顏色
PmenuSel 彈出的提示條目中被選中條目的顏色
SpellBad 拼寫錯誤字符顏色
Visual 可視化模式下選中字符的顏色
Menu 菜單欄的顏色字體
Scrollbar 滾動條的顏色
2) 文本區域配色:
可編輯的文本區域的字符配色(詳細信息請執行 :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腳本在不同的終端下可能顯示不太一致,這是由終端下顏色設置不一致導致的,屬正常情況。
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