对照上图的图标, 我在本文中将教会你以下这些功能:
1 | 简洁明了的Buffer浏览和操作 (MiniBufExplorer) |
2 | 文件浏览器 (WinManager整合TagList窗口和netrw窗口) |
3 | tag浏览器 (taglist安装) |
4 | 高亮的书签 |
5 | 更丰富的语法高亮 |
6 | 成员变量的下拉, 自动补全(omnicppcomplete安装) |
1.安装vim
代码补全ctrl+P,ctrl+N
代码跳转 ctrl+],
代码跳回 ctrl+o
2.安装omnicppcomplete
安装omnicppcomplete后,分别键入ctrl+x, ctrl+o也可以实现代码补全。
安装步骤:
http://blog.csdn.net/gaoguoxin2/article/details/7658914
3 安装使用Ctags
Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。
3.1 下载和安装
一、我是使用apt-get安装的:
sudo apt-get install ctags
二、下载源码安装(网上提供的方法)
1)从http://ctags.sourceforge.net/下载源代码包后,解压缩生成源代码目录,
2)然后进入源代码根目录执行./configure,
3)然后执行make,
4)编译成功后执行make install。
3.2 使用
ctags –R *: “-R”表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这
条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此tags文件。
ctags filename.c: 给单个文件建立tags
ps:
ctags 识别很多语言,可以用如下命令来查看:
ctags --list-languages
4. 安装使用TagList
TagList功能:高效地浏览源码, 其功能就像vc中的workpace, 那里面列出了当前文件中的所有宏,全局变量, 函数名等.
如果没有~/.vim需要手动建立该文件夹
下载地址 | http://www.vim.org/scripts/script.php?script_id=273 |
版本 | 4.4 |
安装 | 在 ~/.vim 目录下解压taglist_xx.zip |
手册 | :help taglist.txt |
配置.vimrc文件
加入下面几行配置
” 设置TList
let Tlist_Use_LEFT_Window=1
let Tlist_File_Fold_Auto_Close=1
let Tlist_Show_One_File=1
let Tlist_GainFocus_On_ToggleOpen=1
let Tlist_Exit_OnlyWindow=1
let g:winManagerWindowLayout=’FileExplorer’
nmap tl :Tlist<cr>
使用:
打开一个代码文件,输入tl 即可看到该文件的代码结构
我们可以通过连按两下 ctrl+w快捷键或者ctrl+方向键在Taglist窗口和编辑区之间切换焦点
5. 安装使用winmanager
下载地址 | http://www.vim.org/scripts/script.php?script_id=95 |
版本 | 2.x |
安装 | 在 ~/.vim 目录下解压winmanager.zip |
手册 | :help winmanager |
现在在你的~/.vimrc中增加下面两句
let g:winManagerWindowLayout='FileExplorer|TagList' nmap wm :WMToggle<cr> |
6.快速浏览和操作Buffer -- 插件: MiniBufExplorer
下载地址 | http://www.vim.org/scripts/script.php?script_id=159 |
版本 | 6.3.2 |
安装 | 将下载的 minibufexpl.vim文件丢到 ~/.vim/plugin 文件夹中即可 |
手册 | 在minibufexpl.vim 文件的头部 |
需要在~/.vimrc中增加:
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
7.安装SuperTab
下载地址 | http://www.vim.org/scripts/script.php?script_id=1643 |
版本 | 0.43 |
安装 | 把supertab.vim 文件丢到 ~/.vim/plugin 文件夹就好了 |
手册 | supertab.vim 文件头部, 和命令 ":SuperTabHelp" |
这个安装包跟先前的几个Vim插件不同,它是一个vba文件,即Vimball格式的安装包,这种格式安装包提供傻瓜式的安装插件的方法。
1)用Vim打开.vba安装包文件。
2)在Vim命令行下运行命令“UseVimball ~/.vim”。此命令将安装包解压缩到~/.vim目录。VImball安装方式的便利之处在于你可以在任何目录打开.vba包安装,而不用切换到安装目的地目录。
在上面一节中你应该学会了自动补全代码的功能, 按下"Ctrl+X Ctrl+O"就搞定了, 如果你够懒的话肯定会说"这么麻烦啊, 居然要按四个键", 不必为此自责, 因为Gergely Kontra 和 Eric Van Dewoestine也跟你差不多, 只不过人家开发了supertab.vim这个插件, 可以永远懒下去了, 下面我来教你偷懒吧.
在你的~/.vimrc文件中加上这两句:
let g:SuperTabRetainCompletionType=2 let g:SuperTabDefaultCompletionType="<C-X><C-O>" |
我稍微再介绍一下上面那两句配置信息:
let g:SuperTabDefaultCompletionType="<C-X><C-O>" " 设置按下<Tab>后默认的补全方式, 默认是<C-P>, " 现在改为<C-X><C-O>. 关于<C-P>的补全方式, " 还有其他的补全方式, 你可以看看下面的一些帮助: " :help ins-completion " :help compl-omni |
let g:SuperTabRetainCompletionType=2 " 0 - 不记录上次的补全方式 " 1 - 记住上次的补全方式,直到用其他的补全命令改变它 " 2 - 记住上次的补全方式,直到按ESC退出插入模式为止 |
8. My settng in /etc/vim/vimrc
set nu
" 代码折叠
set foldmethod=syntax
set foldlevelstart=99
" 设置自动缩进
set autoindent
" 设置自动对齐
"set smartindent
" 设置omnicppcomplete
set nocompatible
filetype plugin on
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 php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
autocmd FileType java set omnifunc=javacomplete#Complete
setlocal omnifunc=javacomplete#Complete
" 设置TagList
let Tlist_Use_LEFT_Window=1
let Tlist_File_Fold_Auto_Close=1
let Tlist_Show_One_File=1
let Tlist_GainFocus_On_ToggleOpen=1
let Tlist_Exit_OnlyWindow=1
"let g:winManagerWindowLayout=’FileExplorer’
nmap tl :Tlist<cr>
" 设置ewinManager
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
" 设置minibuf
"let g:miniBufExplMapCTabSwitchBufs=1
"let g:miniBufExplorerMoreThanOne=0
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
" 设置eclim
let g:EclimProjectTreeAutoOpen=1
\ {'pattern': '.*', 'name': 'Edit', 'action': 'edit'},
\ {'pattern': '.*', 'name': 'Tab', 'action': 'tabnew'},
\ {'pattern': '.*', 'name': 'Split', 'action': 'split'},
\ ]
" 设置myProject
"au BufEnter /home/libin/tmp/MyLockScreen/* setlocal tags+=/home/libin/tmp/MyLockScreen/tags
"au BufEnter /home/libin/tmp/workspace2/duome-locus/* setlocal tags+=/home/libin/tmp/workspace2/duome-locus/tags
let g:SuperTabDefaultCompletionType="<C-X><C-U>"
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>