本文根据网络资料改编,版权归原作者所有,
http://xdaqing.blogbus.com/logs/35987781.html
1. 基本配置
set nocompatible
set mouse=a
syntax on
filetype on
set autowrite
set number
set showcmd
" 为了简洁起见,一般将下面的两行注释掉,前者功能为现实tab和space空字符,若是用vim做排版,建议保留,后者显示换行符等空白字符
"set lcs=tab:>-,trail:-
"set list
set showmode
set title
set tabstop=4
set ruler
"在windows环境下,下面的两行可以注释掉
" set encoding=utf-8
" set fileencoding=utf-8
set nobackup
set autoindent
set smartindent
set expandtab
set shiftwidth=4
set smarttab
" 下面这行最好也注释掉,其功能是叠合代码,比如定义的某些结构体,子模块等叠合成一行,反正我用着是不爽,就注释掉了
" set fdm=indent
set fdc=4
set nowrap
set hlsearch
set incsearch
2. 然后是安装TagList插件
在 这里 可以找到TagList的介绍和下载地址, 安装vim插件的方法都一样, 就是把压缩包下载下来, 解压缩, 一般会得到一个plugin目录和doc目录. 在*nix系统(比如Linux或Mac OS X)中, 只要把这两个文件夹下的文件分别放到~/.vim/plugin和~/.vim/doc下面就行了.
plugin目录下的东西, vim在下次启动时会自动加载, 而那个doc目录下的文件是个帮助文档, 需要用vim打开这个帮助文档, 然后在命令模式下输入 :helptags . (别漏了最后的句点)
TagList的简单配置如下:
map <F3> :Tlist<CR>
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=1
3. 然后安装NERDTree
安装方法类似TagList, 就不再细说了.
简单的配置如下:
map <F1> :NERDTreeMirror<CR>
map <F2> :NERDTreeToggle<CR>
4. 配置Vim的智能补全, 即所谓的Omni Completion.
fun! OmniComplete()
let left = strpart(getline('.'), col('.') - 2, 1)
if left =~ "^$"
return ""
elseif left =~ ' $'
return ""
else
return "\<C-x>\<C-o>"
endfun
inoremap <silent> <S-Tab> <C-R>=OmniComplete()<CR>
" turn on Omni completion
autocmd FileType c set ofu=ccomplete#Complete
autocmd FileType php set ofu=phpcomplete#CompletePHP
autocmd FileType python set ofu=pythoncomplete#Complete
autocmd FileType javascript set ofu=javascriptcomplete#CompleteJS
autocmd FileType html set ofu=htmlcomplete#CompleteTags
autocmd FileType css set ofu=csscomplete#CompleteCSS
autocmd FileType xml set ofu=xmlcomplete#CompleteTags
5. 配合ctags, vim可以从一个函数调用跳转到其函数定义(快捷键是CTRL+]), ctags的用法很简单, 一般来说, 只要在项目的根目录运行 ctags -R . 就行了. vim在启动时, 会自动寻找当前目录下的tags文件, 如果有就会加载, 当然, 也可以告诉vim去哪里找tags文件, 配置如下:
set tags=./tags,~/my/project/tags
还可以配置Tab键来智能补全tags:
fun! KeywordComplete()
let left = strpart(getline('.'), col('.') - 2, 1)
if left =~ "^$"
return "\<Tab>"
elseif left =~ ' $'
return "\<Tab>"
else
return "\<C-N>"
endfun
inoremap <silent> <Tab> <C-R>=KeywordComplete()<CR>
6. 其他的小配置:
source $VIMRUNTIME/menu.vim
set wildmenu
set cpo-=<
set wcm=<C-Z>
map <F6> :emenu <C-Z>
7. 映射tab功能,vim7以后的版本支持建立tab页
" tab configset nocompatible
set mouse=a
syntax on
filetype on
set autowrite
set number
set showcmd
"set lcs=tab:>-,trail:-
" set list
set showmode
set title
set tabstop=4
set ruler
" set encoding=utf-8
" set fileencoding=utf-8
set nobackup
set autoindent
"set smartindent
set expandtab
set shiftwidth=4
set smarttab
" 使结构缩合
" set fdm=indent
set fdc=4
set nowrap
set hlsearch
set incsearch
" fn maping
map <F1> :wall<CR>
map <F2> :NERDTreeToggle<CR>
map <F3> :Tlist<CR>
map <F4> :wqall<CR>
map <F7> :w<CR>
map <C-v> "*p
map <C-c> "*y
map <C-y> :! do-you-commit<CR>
" tab config
:map <C-z> :tabprevious<CR>
:map <C-x> :tabnext<CR>
:map <C-t> :tabnew .<CR>
:imap <C-z> <ESC>:tabprevious<CR>i
:imap <C-x> <ESC>:tabnext<CR>i
:imap <C-t> <ESC>:tabnew .<CR>i
" taglist config
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=1
" clever tab completion
fun! KeywordComplete()
let left = strpart(getline('.'), col('.') - 2, 1)
if left =~ "^$"
return "\<Tab>"
elseif left =~ ' $'
return "\<Tab>"
else
return "\<C-N>"
endfun
inoremap <silent> <Tab> <C-R>=KeywordComplete()<CR>
fun! OmniComplete()
let left = strpart(getline('.'), col('.') - 2, 1)
if left =~ "^$"
return ""
elseif left =~ ' $'
return ""
else
return "\<C-x>\<C-o>"
endfun
inoremap <silent> <S-Tab> <C-R>=OmniComplete()<CR>
" turn on Omni completion
autocmd FileType c set ofu=ccomplete#Complete
转载自 http://blog.chinaunix.net/u2/64263/showart.php?id=1914854