1:vim的安装
安装系统:ubuntu-12.04
apt-get install vim
如果想使用gvim:
apt-get install vim-gtk
或者
apt-get install vim-gnome
2:我的vim配置文件
"""""""""""""""""""""""" " 基础配置 """""""""""""""""""""""" set number "显示行号 set helplang=cn "中文帮助 colorscheme elflord "设置配色 filetype plugin indent on "打开文件类型检测 syntax on "语法高亮 set statusline+=%f "在状态栏中显示文件名 set tabstop=4 "制表符为4 set shiftwidth=4 "统一缩进为4 set autoindent "vim使用自动对齐,也就是把当前行的对起格式应用到下一行 set smartindent "依据上面的对起格式,智能的选择对起方式 set showmatch "设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号 set incsearch "在输入要搜索的文字时,vim会实时匹配 set hlsearch "高亮显示搜索的内容 "set backspace& "set laststatus=2 " 总是显示状态栏 """""""""""""""""""""""" " 转到工作目录 """""""""""""""""""""""" execute ":cd /home/liangsheng/cpp/" """""""""""""""""""""""" " 中文编码 """""""""""""""""""""""" "set fileencodings=gb2312,gb18030,utf-8 "set termencoding=utf-8 "set encoding=prc """""""""""""""""""""""" " 一键编译/运行,F5编译,F6执行,支持C/C++/Java/Python """""""""""""""""""""""" func! CompileGcc() exec "w" let compilecmd="!gcc " let compileflag="-o %< " if search("mpi\.h") != 0 let compilecmd = "!mpicc " endif if search("glut\.h") != 0 let compileflag .= " -lglut -lGLU -lGL " endif if search("cv\.h") != 0 let compileflag .= " -lcv -lhighgui -lcvaux " endif if search("omp\.h") != 0 let compileflag .= " -fopenmp " endif if search("math\.h") != 0 let compileflag .= " -lm " endif exec compilecmd." % ".compileflag endfunc func! CompileGpp() exec "w" let compilecmd="!g++ " let compileflag="-o %< " if search("mpi\.h") != 0 let compilecmd = "!mpic++ " endif if search("glut\.h") != 0 let compileflag .= " -lglut -lGLU -lGL " endif if search("cv\.h") != 0 let compileflag .= " -lcv -lhighgui -lcvaux " endif if search("omp\.h") != 0 let compileflag .= " -fopenmp " endif if search("math\.h") != 0 let compileflag .= " -lm " endif exec compilecmd." % ".compileflag endfunc func! RunPython() exec "!python2 %" endfunc func! CompileJava() exec "!javac %" endfunc func! CompileCode() exec "w" if &filetype == "cpp" exec "call CompileGpp()" elseif &filetype == "c" exec "call CompileGcc()" elseif &filetype == "python" exec "call RunPython()" elseif &filetype == "java" exec "call CompileJava()" endif endfunc func! RunResult() exec "w" if search("mpi\.h") != 0 exec "!mpirun -np 4 ./%<" elseif &filetype == "cpp" exec "! ./%<" elseif &filetype == "c" exec "! ./%<" elseif &filetype == "python" exec "call RunPython" elseif &filetype == "java" exec "!java %<" endif endfunc map <F5> :call CompileCode()<CR> imap <F5> <ESC>:call CompileCode()<CR> vmap <F5> <ESC>:call CompileCode()<CR> map <F6> :call RunResult()<CR> """""""""""""""""""""""" " ctags设置 """""""""""""""""""""""" "map <F12> :!ctags -R <CR><CR> "按下F12即可生成tag map <F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q <CR><CR> "按下F12即可生成tag "ctags -R --c++-kinds=+p --fields=+iaS --extra=+q set tags=stl_tags "set tags+=./tags " add current directory's generated tags file "set tags+=~/cpp/tags " add new tags file """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " cscope设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" map <F7> :!cscope -Rb <CR><CR> "按下F7即可生成cscope.out if has("cscope") set csprg=/usr/bin/cscope set csto=1 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out endif set csverb endif nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR> nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR> nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR> nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR> nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR> nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR> """""""""""""""""""""""" " taglist设置 """""""""""""""""""""""" map <F3> :silent! Tlist<CR> "按下F3就可以呼出了 let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 let Tlist_Exit_OnlyWindow = 1 "当taglist是最后一个分割窗口时,自动退出vim """""""""""""""""""""""" " NERD_commenter的设置 """""""""""""""""""""""" map <c-x> \c<space> "按下ctrl+c即可添加/取消注释 """""""""""""""""""""""" "自动匹配括号 """""""""""""""""""""""" inoremap ( ()<Esc>i inoremap [ []<Esc>i inoremap { {<CR>}<Esc>O autocmd Syntax html,vim inoremap < <lt>><Esc>i| inoremap > <c-r>=ClosePair('>')<CR> inoremap ) <c-r>=ClosePair(')')<CR> inoremap ] <c-r>=ClosePair(']')<CR> inoremap } <c-r>=CloseBracket()<CR> inoremap " <c-r>=QuoteDelim('"')<CR> inoremap ' <c-r>=QuoteDelim("'")<CR> function ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\<Right>" else return a:char endif endf function CloseBracket() if match(getline(line('.') + 1), '\s*}') < 0 return "\<CR>}" else return "\<Esc>j0f}a" endif endf function QuoteDelim(char) let line = getline('.') let col = col('.') if line[col - 2] == "\\" "Inserting a quoted quotation mark into the string return a:char elseif line[col - 1] == a:char "Escaping out of the string return "\<Right>" else "Starting a string return a:char.a:char."\<Esc>i" endif endf " " " " " " " " set showcmd set lines=80 columns=82 " 与windows共享剪贴板 set clipboard+=unnamed " 不要备份文件(根据自己需要取舍) set nobackup " 不要生成swap文件,当buffer被丢弃的时候隐藏它 setlocal noswapfile set bufhidden=hide ""字体大一点 set guifont=UbuntuMono\ 15 ""取消高亮 map<F9> :set nohlsearch<CR> "定义源代码格式化 "定义FormartSrc() func FormartSrc() exec "w" "C程序,Perl程序,Python程序 if &filetype == 'c' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'cpp' exec "!astyle --style=java --suffix=none %" exec "e! %" elseif &filetype == 'perl' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'py' exec "!astyle --style=gnu --suffix=none %" exec "e! %" "Java程序 elseif &filetype == 'java' exec "!astyle --style=java --suffix=none %" exec "e! %" elseif &filetype == 'jsp' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'xml' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'html' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'htm' exec "!astyle --style=gnu --suffix=none %" exec "e! %" endif endfunc "结束定义FormartSrc map <F11> :call FormartSrc()<CR> "python的高亮显示 "set filetype=python func Ispython() exec "w if &filetype == 'py' exec "set filetype=python" endfunc map<F8> :cal Ispython()<CR> "java代码补全 autocmd Filetype java set omnifunc=javacomplete#Complete "-- omnicppcomplete setting -- set nocp set completeopt=menu,menuone let OmniCpp_MayCompleteDot = 1 " autocomplete with . let OmniCpp_MayCompleteArrow = 1 " autocomplete with -> let OmniCpp_MayCompleteScope = 1 " autocomplete with :: let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert) let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window let OmniCpp_GlobalScopeSearch=1 let OmniCpp_DisplayMode=1 let OmniCpp_DefaultNamespaces=["std"]
3:安装中文帮助包
下载vimcdoc-1.8.0.tar.gz
下载地址http://sourceforge.net/projects/vimcdoc/files/vimcdoc/1.8.0/
解压后按照里面的install文件惊醒安装即可
4:安装ctags, cscope, astyle插件
直接
apt-get install ctags
apt-get install cscope
apt-get install astyle
可以草靠这位大神:http://easwy.com/blog/archives/advanced-vim-skills-cscope/,关于cscope的用法等等
下载地址: http://www.vim.org/scripts/script.php?script_id=273
解压后将里面的文件复制到~/.vim里面即可
配置一下帮助文件:
启动vim,输入命令 :helptags ~/.vim/doc/taglist.txt
按F3可出现list窗口
下载地址: http://www.vim.org/scripts/script.php?script_id=1218
安装过程同上
使用:可以用命令行,或者在可是模式下选中后
\cc:普通注视
\cm:块注释
\cs:sexy模式注释
\cu:取消注释
7:安装omnicppcomplete工具,完成c++代码的提示功能
下载地址:自己google
安装过程依然同上
不过我希望有stl里面的提示即可
于是可下载cpp_src.bar.bz2 http://www.vim.org/scripts/script.php?script_id=2358
解压后在其目录里执行
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q可生成一个2M左右的tags文件,我将其重命名为stl_tags,并在配置文件中指明了位置,就可以实现自动提示了
可以参考这位大神:http://www.cnblogs.com/marchtea/archive/2012/10/17/2727852.html 实现stl的高亮
7:安装javacomplete工具,完成java代码的提示功能
下载地址http://www.vim.org/scripts/script.php?script_id=1785
解压后用javac命令:javac Rflection.java 生成Rfection.class文件按照下列顺序将文件移动到~/.vim
autolod里包含: javacomplete.vim, rflection.class
fplugin里包含java_parser.vim
在~/.profile里面添加 export CLASSPATH=~/.vim:$CLASSPATH
即可实现java的自动补全
python的自动补全据说是vim自带的用ctrl-x, ctrl-o进行全能补全即可,ctrl-p是向已经输入的前文进行匹配,ctrl-n是向 后文进行匹配