Chinaunix首页 | 论坛 | 博客
  • 博客访问: 191869
  • 博文数量: 45
  • 博客积分: 1456
  • 博客等级: 上尉
  • 技术积分: 535
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-21 17:47
文章分类
文章存档

2012年(1)

2009年(43)

2008年(1)

我的朋友

分类: LINUX

2009-04-30 09:58:15

本文根据网络资料改编,版权归原作者所有,

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 :Tlist
    let Tlist_Use_Right_Window=1
    let Tlist_File_Fold_Auto_Close=1

3. 然后安装NERDTree

    安装方法类似TagList, 就不再细说了.

    简单的配置如下:

    map :NERDTreeMirror
    map :NERDTreeToggle

 4. 配置Vim的智能补全, 即所谓的Omni Completion.

    fun! OmniComplete()
    let left = strpart(getline('.'), col('.') - 2, 1)
    if left =~ "^$"
        return ""
    elseif left =~ ' $'
        return ""
    else
        return "\\"
    endfun
    inoremap =OmniComplete()

    " 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 "\"
    elseif left =~ ' $'
        return "\"
    else
        return "\"
    endfun
    inoremap =KeywordComplete()

6. 其他的小配置:

    source $VIMRUNTIME/menu.vim
    set wildmenu
    set cpo-=<
    set wcm=
    map :emenu

7. 映射tab功能,vim7以后的版本支持建立tab页

     " tab config
     :map  :tabprevious
     :map  :tabnext
     :map  :tabnew .
     " 在编译模式下也可使用
     :imap  :tabpreviousi
     :imap  :tabnexti
     :imap  :tabnew .i

8. 由于本文是在windows的gvim下修改的,仍然保留了原来的习惯,故把原有的配置也保留下来了
     set nocompatible

     set nu
     source $VIMRUNTIME/vimrc_example.vim
     source $VIMRUNTIME/mswin.vim
     behave mswin

     set diffexpr=MyDiff()
     function MyDiff()
        let opt = '-a --binary '
        if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
        if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
        let arg1 = v:fname_in
        if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
        let arg2 = v:fname_new
        if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
        let arg3 = v:fname_out
        if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
     let eq = ''
     if $VIMRUNTIME =~ ' '
        if &sh =~ '\          let cmd = '""' . $VIMRUNTIME . '\diff"'
          let eq = '"'
        else
          let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
        endif
      else
         let cmd = $VIMRUNTIME . '\diff'
      endif
      silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
    endfunction

9.所有的配置文件如下


set 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 "
*y
map <C-y> :! do-you-commit<CR>
 
" tab config
:map :tabprevious
:map :tabnext
:map :tabnew .
:imap :tabpreviousi
:imap :tabnexti
:imap :tabnew .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 =KeywordComplete()
 
fun! OmniComplete()
    let left = strpart(getline('.'), col('.') - 2, 1)
    if left =~ "
^$"
        return "
"
    elseif left =~ ' $'
        return "
"
    else
        return "
\<C-x>\<C-o>"
endfun
inoremap =OmniComplete()
 
"
turn on Omni completion
autocmd FileType c set ofu=ccomplete#Complete

阅读(4093) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-05-05 17:23:57

不错, 转载后最好能给我留个言~