Vim十大必备插件

Vim十大必备插件

  1. Taglist

    taglist是一个用于显示定位程序中各种符号的插件,例如宏定义、变量名、结构名、函数名这些东西 我们将其称之为符号(symbols),而在taglist中将其称之为tag。显然,要想将程序文件中的tag显示出来,需要事先了解全部tag的信 息,并将其保存在一个文件中,然后去解析对应的tag文件。taglist做的仅仅是将tag文件中的内容解析完后显示在Vim上而已。tag扫描以及数 据文件的生成则是由ctags(Exuberant Ctags)这一工具完成的,所以在使用taglist之前,你的电脑需要装有ctags。

  2. NERDTree

    NERDTree是一个用于浏览文件系统的树形资源管理外挂,它可以让你像使用Windows档案总管一样在VIM中浏览文件系统并且打开文件或目录。

  3. NerdCommenter

    如果你是一个酷爱写注释的程序员的话,那么你一定要用一下nerdcommenter,即便你不热衷于写注释,你也应该关注下nerdcommenter这款插件。

    nerdcommenter和Vim的Visual模式结合可以快速的注释/取消注释多行代码,同时在行尾追加注释并自动进入Insert模式可以方便的进行行内注释。

  4. Neocomplete

    用过了很多补全插件,最后还是选择了neocomplete。neocomplete.vim是来自shougo的作品,该插件维护了当前buffer的一个关键词列表,从而提供强大的关键词补全功能。

  5. Molokai

    配色使用的是我钟爱的monokai,但是换了深色配色,使用了一个molokai配色插件。之所以叫molokai,因为这个配色是monokai的修改版,将monokai的背景色改为了深色。我想要一个深色背景的molokai.正和我意啊。

  6. Vim-airline

    接下来介绍一下个人非常喜欢的一个插件vim-airline。这是一款状态栏增强插件,可以让你的Vim状态栏非常的美观,同时包括了buffer显示条扩展smart tab line以及集成了一些插件。

  7. Ctrlp

    ctrlp是一款相当棒的插件,主要的功能是对文件进行模糊的查找,如果你的project目录结构复杂,或者你正在阅读一个较大的项目的话,那么ctrlp可以帮你快速的定位到你想要文件而不必在终端不断的cd、ls。


lulu,烧死策划

赵晨赞同

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Copycat: lulu
" Version: 3.3.1
" Install: 在linux和windows下无需改动配置文件的内容,对应配置文件夹是vim_3.3
"          在linux下在 ~/ 目录下,配置文件名改成 .vimrc,路径为 ~/.vimrc
"                 配置文件夹名改成 .vim,路径为 ~/.vim
"          在windows下在 $(vim)/ 目录下,配置文件名改成 _vimrc,路径为 Vim/_vimrc
"                         配置文件夹名改成 vimfiles,路径为 Vim/vimfiles
" Time:    2013.3.15 (实习+工作)一周年纪念日
" Bug:     minibufexpl编辑多文件是会导致vim速度变慢,当用wm,Project,编辑项目时
"   最好关闭minibufexpl,命令是CM(一直都存在的是minibufexpl的问题,
"   和其他插件无关)
" Modifty: 去掉了Minbuf和omnicppcomplete提示窗口and Tagbar放到左边
"
"索引
" ctags
" cscope
"
"函数提示
" echofunc(2.0)
" taglist(4.5)
" Tagbar(2.4.1)支持面向对象+
"
"窗口
" WinManager(2.3)
" nerdtree(4.2)
" MiniBufExplorer(6.3.2)--------------------------------------------------已剔除
"
"智能补全
" supertab(2.0)
" omnicppcomplete(0.41)
"
"其他
" drawit(11)画图
" conqueterm(2.2)vim中打开终端的功能+
" csExplorer(7.0.1)提供列出配色列表的功+
"       calendar.vim(2.5)提供日历的功能,并且可以记笔记+
"       visincr(20)提供生成数列的功能+
"       fencview(4.8)字符编码识别+
" visincr(20)提供生成数列的功能+  :SO % 后visincr.vba.gz会消失变成visincr.vba
"       cmdline completion(0.04)命令行模式的补全+
"
"
"项目管理插件
" project(1.4.1)+
"       grep.vim(1.9)工程内查找与替换+
" bufexplorer(7.3.1)打开历史文件列表以达到快速切换文件+
"       lookupfile(1.8)文件查找+
"       genutils(2.5)底层的lookupfile的功能支持+
" FuzzyFinder(4.2.2)缓冲器/文件/命令/标签/等浏览器的模糊匹配 +
"       l9(1.1)FuzzyFinder底层依耐+
"
"c/c++ 辅助
" c.vim(6.0)+
"       stl.vim(0.1)stl语法高亮+
" stlrefvim(1.0)stl帮助 +
"       a.vim(2.18) .c, .cpp <-->.h快速切换+
"       man.vim(内置)查看系统调用+
" cscope_vim.vim(cscope映射)+
" NERD_commenter(2.3.0)提供快速注释/反注释代码块的功能+
" checksyntax.vba(2.02)语法检查+ (跟lookupfile.vim的F5冲突了,把checksyntax.vimF5改成F6)
" auto.vim(2.1)自动排版,可以少打很多空格---------------------------------------------以剔除
"
" + = 新增加的插件
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 文本格式和排版
"
set formatoptions=tcrqn " 自动格式化
set autoindent " 继承前一行的缩进方式,特别适用于多行注释
set smartindent " 为C程序提供自动缩进
set cindent " 使用C样式的缩进
set smarttab " 在行和段开始处使用制表符
"set tabstop=4 " 制表符为4
"set softtabstop=4 " 统一缩进为4
"set shiftwidth=4
"set noexpandtab " 不要用空格代替制表符
"set nowrap " 不要换行
set fileformats=unix,dos " 自动识别UNIX格式和MS-DOS格式
set fileformat=mac


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 设置字符集(看情况具体选择)
"
"let &termencoding=&encoding
"set fileencodings=utf-8,gbk,ucs-bom,cp936
"set fileencoding=gb18030
"set fileencodings=utf-8,gb18030,utf-16,big5
"set enc=utf-8
"set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936

set fileencoding=gb2312


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 搜索和匹配
"
set showmatch " 高亮显示匹配的括号
set matchtime=5 " 匹配括号高亮的时间(单位是十分之一秒)
set scrolloff=10   " 光标移动到buffer的顶部和底部时保持10行距离
set hlsearch " 高亮搜索
"set nowrapscan " 查找到文件头或文件尾时停止
set incsearch " 边输入边查找
"set laststatus=2 " 总是显示状态行
set ignorecase " 在搜索的时候忽略大小写
"set statusline=%F%m%r%h%w\[POS=%l,%v][%p%%]\%{strftime(\”%d/%m/%y\ -\ %H:%M\”)}
" 我的状态行显示的内容(包括文件类型和解码)

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 文件设置
"
set shortmess=atI " 启动的时候不显示那个援助索马里儿童的提示`
set report=0 " 通过使用: commands命令,告诉我们文件的哪一行被改变过
set fillchars=vert:\ ,stl:\ " 在被分割的窗口间显示空白,便于阅读 ,stlnc:\(加了这个wm分割兰有\\\\\\\\\\\\\)
set mouse=a " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set selection=exclusive
set selectmode=mouse,key


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 一般设置
"
set viminfo+=! " 保存全局变量
set history=300 " history文件中需要记录的行数
set nocompatible " 不要使用vi的键盘模式,而是vim自己的
set foldmethod=syntax
set foldlevel=100   " 启动vim时不要自动折叠代码
set nu
set fileencodings=utf-8,gbk
set ruler
set showmatch " 高亮显示匹配的括号
filetype on " 侦测文件类型
set nobackup " 不要备份文件(根据自己需要取舍)
"set backup
syntax enable
syntax on " 语法高亮
set magic " 设置正表达式
set backspace=indent,eol,start " 这指明在插入模式下在哪里允许 <BS> 删除光标前面的字符。
" 逗号分隔的三个值分别指:行首的空白字符,换行符和插入模式开始处之前的字符。
set showcmd " 在 Vim 窗口右下角,标尺的右边显示未完成的命令
set noerrorbells " 不让vim发出讨厌的滴滴声
set novisualbell " 不要闪烁
"set vb t_vb= " 没发出声音和闪烁 (在windows下写在配置文件无效必须用命令行输入 或者 重新:source vimrc才有效)
" :inoremap ( ()<ESC>i
" :inoremap { {<CR>}<ESC>O
" :inoremap [ []<ESC>i
" :inoremap " ""<ESC>i
" :inoremap ' ''<ESC>i

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 编译链接
"
nmap<Leader>m :wa<CR>:make<CR>:cw<CR><CR>
" 分解说明下,<Leader>m设定快捷键为;m(;由<Leader>指定),:wa<CR>保持所有打开的文档,
" :make<CR>执行make命令,:cw<CR>显示quickfix(如果有编译错误或警告时),
" 最后的<CR>消除make命令执行完成屏幕上“PressENTER or type command to continue”的输入等待提示信息。

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" GUI
"
if has("gui_running") " 如果是图形界面  
set guioptions=m " 关闭菜单栏
set guioptions=t " 关闭工具栏
" set guioptions=L " 启动左边的滚动条
" set guioptions+=r " 启动右边的滚动条
" set guioptions+=b " 启动下边的滚动条
set clipboard+=unnamed " 共享剪贴板
if has("win32")
      colorscheme torte " torte配色方案
      "set guifont=Consolas:h12 " 字体和大小
      "set guifont=Consolas:h11 " 字体和大小
      set guifont=Consolas:h10 " 字体和大小
      set guifont=Consolas:h9 " 字体和大小
      set guifont=Consolas:h8 " 字体和大小
      map <F11> <Esc>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>    " 非插入模式下F11全屏
      imap <F11> <Esc>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>   " 插入模式下F11全屏
endif
endif

if has('win32')
endif


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" taglist
"
let Tlist_Use_Right_Window = 1 " 在左侧显示窗口
let Tlist_Compart_Format = 1 " 压缩方式
let Tlist_Exist_OnlyWindow = 1 " 如果只有一个buffer,kill窗口也kill掉buffer
let Tlist_File_Fold_Auto_Close = 0 " 不要关闭其他文件的tags
let Tlist_Enable_Fold_Column = 0 " 不要显示折叠树 (鼠标可以点开)
let Tlist_WinWidth = 25                 " taglist窗口宽度
nmap <silent> <leader>tl :Tlist<cr>
if has("win32")
let Tlist_Ctags_Cmd = '   ctags' "windows下必须空3个字符,否则解析成gs
else
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
endif

"标签列表窗口显示或隐藏不影响整个gvim窗口大小
let Tlist_Inc_Winwidth = 0
"设置tablist插件只显示当前编辑文件的tag内容,而非当前所有打开文件的tag内容
let Tlist_Show_One_File=1



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" netrw
"
let NERDTreeWinPos = 'right'
let g:netrw_winsize = 35
nmap <silent> <leader>fe :Sexplore!<cr>


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" winmanager
"
let g:winManagerWindowLayout='NERDTree|BufExplorer'
"let g:winManagerWindowLayout = 'FileExplorer|TagList'
"let g:winManagerWindowLayout = 'FileExplorer'
let g:winManagerWidth = 25
let g:defaultExplorer = 0
nmap wm :WMToggle<cr>
nmap <C-W><C-F> :FirstExplorerWindow<cr>
nmap <C-W><C-B> :BottomExplorerWindow<cr>
autocmd BufWinEnter \[Buf\ List\] setl nonumber


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" omnicppcomplete
"
set nocp
set completeopt=menu "去掉提示窗口"
filetype plugin on
let OmniCpp_DefaultNamespaces = ["std"] "下面的设置用于当用户预先声明namespace时也能自动补全代码(如使用using std::string)
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " 显示函数参数列表
let OmniCpp_MayCompleteDot = 1   " 输入 .  后自动补全
let OmniCpp_MayCompleteArrow = 1 " 输入 -> 后自动补全
let OmniCpp_MayCompleteScope = 1 " 输入 :: 后自动补全
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]


if has("win32") " 设置代码提示窗口的颜色(默认为粉红色)
" highlight Pmenu ctermbg=13 guibg=LightGray
" highlight PmenuSel ctermbg=7 guibg=DarkBlue guifg=White
highlight Pmenu ctermbg=7 guibg=DarkBlue guifg=White
"       highlight PmenuSbar ctermbg=7 guibg=DarkGray
" highlight PmenuThumb guibg=Black
endif


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" minibufexpl  
"
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
"let g:miniBufExplorerMoreThanOne=1 "自动打开


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope
"
if has("cscope")
set csto=0
set cst
set nocsverb
if filereadable("cscope.out") " add any database in current directory
   cs add cscope.out
elseif $CSCOPE_DB != "" " else add database pointed to by environment    
   cs add $CSCOPE_DB
endif
set csverb " 这个必须放在后面,不然windows上找不到cscope.out
endif

nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR> :cw<CR>
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR> :cw<CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR> :cw<CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR> :cw<CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR> :cw<CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR> :cw<CR>
nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> :cw<CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR> :cw<CR>
"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>  

" Using 'CTRL-spacebar' then a search type makes the vim window
" split horizontally, with search result displayed in
" the new window.  
nmap <C-Space>s :scs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>g :scs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>c :scs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>t :scs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>e :scs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space>f :scs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-Space>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-Space>d :scs find d <C-R>=expand("<cword>")<CR><CR>  

" Hitting CTRL-space *twice* before the search type does a vertical
" split instead of a horizontal one  
nmap <C-Space><C-Space>s
\:vert scs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>g
\:vert scs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>c
\:vert scs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>t
\:vert scs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>e
\:vert scs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-Space><C-Space>i
\:vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-Space><C-Space>d
\:vert scs find d <C-R>=expand("<cword>")<CR><CR>  


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" a.vim
" A few of quick commands to swtich between source files and header files quickly.

" :A switches to the header file corresponding to the current file being edited (or vise versa)
" :AS splits and switches
" :AV vertical splits and switches
" :AT new tab and switches
" :AN cycles through matches
" :IH switches to file under cursor
" :IHS splits and switches
" :IHV vertical splits and switches
" :IHT new tab and switches
" :IHN cycles through matches
" <Leader>ih switches to file under cursor
" <Leader>is switches to the alternate file of file under cursor (e.g. on  <foo.h> switches to foo.cpp)
" <Leader>ihn cycles through matches
"
" E.g. if you are editing foo.c and need to edit foo.h
"      simply execute :A and you will be editting foo.h,  
"      to switch back to foo.c execute :A again.
"
" Can be configured to support a variety of languages. Builtin support for C, C++ and ADA95
"

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" lookupfile.vim 插件设置
"
let g:LookupFile_MinPatLength = 2               "最少输入2个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0        "不保存上次查找的字符串
let g:LookupFile_PreservePatternHistory = 1     "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1          "回车打开第一个匹配项目
let g:LookupFile_AllowNewFiles = 0              "不允许创建不存在的文件
let g:LookupFile_SortMethod = ""                "关闭对搜索结果的字母排序
"if filereadable("/home/ganquan/linux-2.6.34-rc4/filenametags")                "设置tag文件的名字
"let g:LookupFile_TagExpr ='"/home/ganquan/linux-2.6.34-rc4/filenametags"'
"endif


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" lookupfile.vim 插件设置
"
let g:tagbar_left = 1 "Tagbar放到左边


平时:VimWiki Calendar
工作(Coding)时很多,
a.vim   .h和.c之间切换
lookupfile 使用部分关键字查找文件名
taglist 大名鼎鼎,不多说了
NERD_tree 树形的文件系统浏





VIM的配置文件.vimrc如下
"Filename: 

~/.vimrc
"Author:   gqyang
"Email:    [email protected] 

"=======================================================================
"
" VIM配置
"
"=======================================================================
"
"在用户主目录下建立.vimrc文件,复制本文内容到.vimrc中
"插件目录
"  ~/.vim
"  ~/.vim/doc     帮助文件的目录
"  ~/.vim/plugin  插件的目录
"  ~/.vim/syntax  语法目录
"========================================================================
"
" 常规设置
"
"========================================================================
"------------------------------------------------------------------------
" 自动识别文件类型;用文件类型plugin脚本;使用缩进定义文件  
"------------------------------------------------------------------------
filetype on   
filetype plugin on   
if has("autocmd")     
     au BufReadPost * if line("'"") > 1 && line("'"") <= line("$") | exe "normal! g'"" | endif     
     "have Vim load indentation rules and plugins according to the detected filetype     
     filetype plugin indent on
   filetype indent on  
endif  
"------------------------------------------------------------------------
" 自动加载和自动回写
"------------------------------------------------------------------------
" 设置当正在编辑的文件被外部的其它程序所修改后自动在Vim加载
if exists("&autoread")
   set autoread
endif  
" 自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令时进行;
" 用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。
set autowrite
"------------------------------------------------------------------------
" 可以为不同模式分别打开鼠标
"------------------------------------------------------------------------
"  "n” 普通模式
"  "v” 可视模式
"  "i” 插入模式
"  "c” 命令行模式
"  "h” 编辑帮助文件时,所有前面的模式
"  "a” 所有前面的模式
"  "r” hit-enter 和 more-prompt 提示时
if exists("&mouse")
   set mouse=a   " 使用鼠标这样设置后,不能用鼠标右键的”复制"了,解决方法,在复制之前,先按住Shift键
endif
"--------------------------------------------------------------------------
"文件和备份,不需要,所以复位
"--------------------------------------------------------------------------
set nobackup
set nowritebackup

"------------------------------------------------------------------------
"文档格式
"------------------------------------------------------------------------
"set encoding=utf-8
set expandtab     " 使用space代替tab.
set shiftwidth=4  " (自动) 缩进使用的4个空格,用于 "cindent”, ">>”, "<<” 等
set softtabstop=4 " 设置软制表符的宽度
set tabstop=4     " 设置制表符(tab键)的宽度
set smarttab
set autoindent    " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用 noautoindent 取消设置 
set smartindent   " 智能对齐方式
set cindent       " 使用 C/C++ 语言的自动缩进方式   
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s    " 设置C/C++语言的具体缩进方式  

"if has("syntax")     
   syntax on     " 语法高亮   
"endif  
"colorscheme zellner   " 设置配色方案,它会在 'runtimepath' 里搜索"colors/{name}.vim",载入第一个找到的文件

set scrolloff=5   " 光标上下两侧最少保留的屏幕行数。这使你工作时总有一些可见的上下文。
set showmatch     " 设置匹配模式,显示匹配的括号
set hidden        " 没有保存的缓冲区可以自动被隐藏  
set number        " 显示行号   
"set previewwindow " 标识预览窗口  

"------------------------------------------------------------------------
"编辑操作
"------------------------------------------------------------------------
"set ignorecase   " 搜索模式里忽略大小写   
"set smartcase    " 如果搜索模式包含大写字符,不使用 'ignorecase' 选项。只有在输入搜索模式并且打开 'ignorecase' 选项时才会使用。
"set backspace=2  " 设置退格键可用 
set linebreak     " 整词换行
set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去    

"命令行设置 
set showcmd        " 命令行显示输入的命令   
set showmode       " 命令行显示vim当前模式   
"搜索设置   
set incsearch       
" 输入字符串就显示匹配点   
set hlsearch 
 
set history=50    " 历史记录50条 

set viminfo='1000,<500
filetype plugin indent on  " 加了这句才可以用智能补全
"set tags=~/Vim_tags/tags       " 设置tags文件的路径

"括号自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
   if getline('.')[col('.') - 1] == a:char
       return "\<Right>"
   else
       return a:char
   endif
endfunction

"------------------------------------------------------------------------
"拼写检查
"------------------------------------------------------------------------
map <leader>sn ]
map <leader>sp [
map <leader>sa zg
map <leader>s? z=

"--------------------------------------------------------------------------------
"状态栏相关的设置
"--------------------------------------------------------------------------------
set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]  " 状态栏的显示格式
set laststatus=2  " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行   
set ruler         " 标尺,用于显示光标位置的行号和列号,逗号分隔。每个窗口都有自己的标尺。如果窗口有状态行,标尺在那里显示。否则,它显示在屏幕的最后一行上。

"--------------------------------------------------------------------------------
"代码折叠
"--------------------------------------------------------------------------------
"set foldmarker={{{,}}} " 指定折叠标志
"set foldmarker={,}     " 指定折叠标志
syntax region functionFold start="/(^/({/|/S.*{/)$/n/)/@<=/_[^}]" end="/(^{.*/)/@<!$/n/(^}/)/@=" transparent fold
syntax region commentFold start="/" transparent fold keepend
syntax region commentFold2 start="^/(^//.*$/n/)/@<!//.*/(/n///)/@=$" end="^/(^//.*$/n/)/@<=//.*/(/n///)/@!$" transparent fold keepend

"set foldmethod=marker " 标志用于指定折叠。
set foldmethod=syntax  " 语法高亮项目指定折叠。
set foldlevel=100      " 不要自动折叠
"set foldopen-=search  " 不要打开折叠,当搜索进它里面时
"set foldopen-=undo    " 不要打开折叠,当做撤销进它里面时
"set foldcolumn=4      " 如果非零,指定宽度的列在窗口的一侧显示,指示折叠的打开和关闭。最大值为12

"------------------------------------------------------------------------
"C,C++的调试(适用于在Vim中编译调试单个文件)
"------------------------------------------------------------------------
map <F7> :call Rungdb()<CR><CR><CR>
func! Rungdb()
   exec "w"
   exec "!gcc % -g -o %<"
   exec "!gdb %<"
endfunc
"********************************************************************************
"                                                            
" 插件设置                                                      
"scope   ctags    omnicppcomplete      Taglist      QuickFix   MiniBufferExplorer       
"NERDTree   WinManager      A       grep   NERD Commenter   SuperTag         
"c-support                                                      
"-------------------------------------------------------------------------------
"快捷键设置                                                      
"F2      自动补全的代码                                                
"F3      根据头文件补全代码                                             
"F4      grep                                                   
"F5    make                                                   
"F6      make clean                                                
"F7      gdb(单个文件编译及调试)                                       
"F8      更新ctags数据库                                             
"F9      编译                                                      
"Ctr+F9   运行                                                      
"F10                                                         
"F12    切换.c和.h文件                                             
"Tag   C-X C-O 补全                                                
"wm      WinManager                                                
"cscope检索                                                      
"Ctrl+Shift+- 然后按s    查找本 C 符号(可以跳过注释)                              
"Ctrl+Shift+- 然后按g    查找本定义                                       
"Ctrl+Shift+- 然后按d    查找本函数调用的函数                                 
"Ctrl+Shift+- 然后按c    查找调用本函数的函数                                 
"Ctrl+Shift+- 然后按e    查找本 egrep 模式                                 
"Ctrl+Shift+- 然后按f    查找本文件                                       
"Ctrl+Shift+- 然后按i     查找包含本文件的文件                                 
"********************************************************************************
"--   ctags setting   --
 " 按下F8重新生成tag文件,并更新taglist
   map <F8> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
   imap <F8> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
   set tags=tags;
   set autochdir
   "set tags+=./tags "add current directory's generated tags file
   "set tags+=~/Vim_Tags/tags "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)

"--   scope setting   --
"用法:
"<1>、为源码建立一个cscope数据库
"lingd@ubuntu:~/arm/linux-2.6.28.7$ cscope -Rbq
"lingd@ubuntu:~/arm/linux-2.6.28.7$ ls cscope.*
"cscope.in.out cscope.out cscope.po.out
"<2>、用vim打开某个源码文件,末行模式下,输入“:cs add /home/../cscope.out home/...",添加cscope数据库到vim。已将vim配置为启动时,自动添加当前目录下的cscope数据库
"<3>、完成前两步后,现在就可以用“cs find c”等Cscope查找命令查找关键字了。我们已在.vimrc中将“cs find c”等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快按下c)
"-- Cscope setting --
   if has("cscope")
       set csprg=/usr/bin/cscope       " 指定用来执行cscope的命令
       set csto=0                       " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库
       set cst                           " 同时搜索cscope数据库和标签文件
       set cscopequickfix=s-,c-,d-,i-,t-,e-   " 使用QuickFix窗口来显示cscope查找结果
       set nocsverb
       if filereadable("cscope.out")   " 若当前目录下存在cscope数据库,添加该数据库到vim
           cs add cscope.out
       elseif $CSCOPE_DB != ""           " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim
           cs add $CSCOPE_DB
       endif
       set csverb
   endif
   
   " 将:cs find c等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快再按下c)
   nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
   nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
   nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
   nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
   nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
   nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<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> :copen<CR><CR

"-- omnicppcomplete setting --
   set nocp
   " 按下F2自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
   imap <F2> <C-X><C-O>
   " 按下F3根据头文件内关键字补全
   imap <F3> <C-X><C-I>
   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 " enable the global scope search
   let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members
   "let OmniCpp_DefaultNamespaces=["std"]
   let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column
   let OmniCpp_ShowAccess=1


"-- Taglist setting --
   let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行
   let Tlist_Use_Right_Window=0 "让窗口显示在右边,0的话就是显示在左边
   let Tlist_Show_One_File=0 "让taglist可以同时展示多个文件的函数列表
   let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
   let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动推出vim
   "是否一直处理tags.1:处理;0:不处理
   let Tlist_Process_File_Always=1 "实时更新tags
   let Tlist_Inc_Winwidth=0

"-- QuickFix setting --
   " 按下F6,执行make clean
   map <F6> :make clean<CR><CR><CR>
   " 按下F5,执行make编译程序,并打开quickfix窗口,显示编译信息
   map <F5> :make<CR><CR><CR> :copen<CR><CR>
   " 以上的映射是使上面的快捷键在插入模式下也能用
   imap <F6> <ESC>:make clean<CR><CR><CR>
   imap <F5> <ESC>:make<CR><CR><CR> :copen<CR><CR>

   " -- MiniBufferExplorer setting--
   let g:miniBufExplMapWindowNavVim = 1 " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
   let g:miniBufExplMapWindowNavArrows = 1 " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
   let g:miniBufExplMapCTabSwitchBufs = 1 " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
   "let g:miniBufExplMapCTabSwitchWindows = 1 " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像不支持
   let g:miniBufExplModSelTarget = 1   " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer

   "--NERDTree setting--
   let g:NERDTree_title="[NERDTree]" 
   "let g:winManagerWindowLayout="NERDTree|TagList" 
     
   function! NERDTree_Start() 
       exec 'NERDTree' 
   endfunction 
     
   function! NERDTree_IsValid() 
       return 1 
   endfunction 
     
 "-- WinManager setting --
   let g:winManagerWindowLayout='FileExplorer|TagList' " 设置我们要管理的插件
   "let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim
   nmap wm :WMToggle<cr>


 "-- A setting --
   nnoremap <silent> <F12> :A<CR>

 "-- grep setting --
   nnoremap <silent> <F4> :Grep<CR>"

 "-- NERD Commenter setting --
 " ,ca,在可选的注释方式之间切换,比如C/C++ 的块注释和行注释//
 " ,cc,注释当前行
 " ,c,切换注释/非注释状态
 " ,cs,以”性感”的方式注释
 " ,cA,在当前行尾添加注释符,并进入Insert模式
 " ,cu,取消注释
 " Normal模式下,几乎所有命令前面都可以指定行数
 " Visual模式下执行命令,会对选中的特定区块进行注释/反注释
   let mapleader="," 
   

 "-- SuperTag setting --
   let g:SuperTabDefaultCompletionType="context"

 "-- c-support setting --
 "解压,有c-support、ftplugin、doc、plugin四个文件,拷贝到$HOME/.vim/目录下。并在.vimrc中用命令filetype plugin on激活插件功能。
 "功能一:自动为*.c文件添加文件头说明
 "$ vim ~/.vim/c-support/templates/Templates 可改变头说明
 "快捷键帮助信息详见doc的pdf文档
Vim十大必备插件_第1张图片

VIM整体界面图

对涉及到的插件信息整理如下
1. ctags安装与配置
       Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。
       安装步骤跟大多数软件的从源代码安装步骤一样。

    1)从http://ctags.sourceforge.net/下载源代码包后,解压缩生成源代码目录,

    2)然后进入源代码根目录执行./configure,

    3)然后执行make,

    4)编译成功后执行make install。

       Ubuntu中直接sudo apt-get install ctags就可以了。

       在~/.vimrc中的配置如下:

 "--   ctags setting   --
 " 按下F8重新生成tag文件,并更新taglist
   map <F8> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
   imap <F8> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
   set tags=tags;
   set autochdir
   "set tags+=./tags "add current directory's generated tags file
   "set tags+=~/Vim_Tags/tags "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)

       ctags安装完成。

       使用Ctags的也很简单。 进入我们的项目代码根目录,执行以下命令:ctags -R,会在源代码目录生成tags文件。配置文件中已经配置了F8快捷键,所以可以进入代码根目录后,打开Vim,按下F8快捷键自动生成tags文件。此时,我们已经具有定义跳转的功能了。有两组快捷键是最常用的。

        Ctrl-]   跳转到光标所在符号的定义。

     Ctrl-t   回到上次跳转前的位置。

    更多功能通过命令man ctags或在Vim命令行下运行help ctags查询。

Vim十大必备插件_第2张图片
查找mutex_lock函数

2. Taglist安装与配置

    Taglis提供源代码符号的结构化视图,可以列出当前文件中的所有标签(宏, 全局变量, 函数名等)。

    安装步骤:

    1)从http://www.vim.org/scripts/script.php?script_id=273下载安装包。

    2)将Taglist安装包解压,把解压后的文件夹(doc和plugin)复制到在~/.vim目录,提示重名时选择合并,其他插件安装过程类似。

    3)进入~/.vim/doc目录,在Vim下运行"helptags ."命令。此步骤是将doc下的帮助文档加入到Vim的帮助主题中,这样我们就可以通过在Vim中运行“help taglist.txt”查看taglist帮助。

    4)在.vimrc文件中进行配置

"-- Taglist setting --
   let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行
   let Tlist_Use_Right_Window=0 "让窗口显示在右边,0的话就是显示在左边
   let Tlist_Show_One_File=0 "让taglist可以同时展示多个文件的函数列表
   let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
   let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动退出vim
   "是否一直处理tags.1:处理;0:不处理
   let Tlist_Process_File_Always=1 "实时更新tags
   let Tlist_Inc_Winwidth=0 

       taglist安装完成。

       在Vim命令行下运行TlistToggle命令就可以打开Taglist窗口,再次运行TlistToggle则关闭。

Vim十大必备插件_第3张图片

3. Cscope安装与配置

    Cscope是一个类似于ctags的工具,不过其功能比ctags强大很多,提供交互式查询语言符号功能,如查询哪些地方使用某个变量或调用某个函数。

       安装步骤:ubuntu直接 sudo apt-get install cscope即可。

       在.vimrc文件中进行配置:

"--   scope setting   --
"-- Cscope setting --
   if has("cscope")
       set csprg=/usr/bin/cscope       " 指定用来执行cscope的命令
       set csto=0                       " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库
       set cst                           " 同时搜索cscope数据库和标签文件
       set cscopequickfix=s-,c-,d-,i-,t-,e-   " 使用QuickFix窗口来显示cscope查找结果
       set nocsverb
       if filereadable("cscope.out")   " 若当前目录下存在cscope数据库,添加该数据库到vim
           cs add cscope.out
       elseif $CSCOPE_DB != ""           " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim
           cs add $CSCOPE_DB
       endif
       set csverb
   endif
   
   " 将:cs find c等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快再按下c)
   nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
   nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
   nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
   nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
   nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
   nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<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> :copen<CR><CR

      使用方法:


    1)为源码建立一个cscope数据库   
@ubuntu:~/arm/linux-2.6.28.7$ cscope -Rbq
@ubuntu:~/arm/linux-2.6.28.7$ ls cscope.*
"cscope.in.out cscope.out cscope.po.out

    2) 用vim打开某个源码文件,末行模式下,输入“:cs add /home/../cscope.out home/...",添加cscope数据库到vim。已将vim配置为启动时,自动添加当前目录下的cscope数据库

    3)完成前两步后,现在就可以用“cs find c”等Cscope查找命令查找关键字了。我们已在.vimrc中将“cs find c”等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快按下c)
Vim十大必备插件_第4张图片

4. OmniCppComplete安装与配置
       OmniCppComplete主要提供输入时实时提供类或结构体的属性或方法的提示和补全。该功能要tags文件的支持。

       安装步骤:

        1) 从http://www.vim.org/scripts/script.php?script_id=1520下载安装包。

    2)将omnicppcomplete-0.41安装包解压,把解压后的文件夹复制到在~/.vim目录,提示重名时选择合并。

    3)进入~/.vim/doc目录,在Vim下运行"helptags ."命令。

    4)在.vimrc文件中进行配置

"-- omnicppcomplete setting --
   set nocp
   " 按下F2自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
   imap <F2> <C-X><C-O>
   " 按下F3根据头文件内关键字补全
   imap <F3> <C-X><C-I>
   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 " enable the global scope search
   let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members
   "let OmniCpp_DefaultNamespaces=["std"]
   let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column
   let OmniCpp_ShowAccess=1

        omnicppcomplete安装完成。

       OmniCppComplete是基于ctags数据库即tags文件实现的(基于ctags生成的索引信息来实现自动补全的),所以在ctags -R生成tags时还需要一些额外的选项,这样生成的tags文件才能与OmniCppComplete配合运作。使用下列命令生成tags文件,就可以与OmniCppComplete配合运作:
       ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
       --c++-kinds=+p : 为C++文件增加函数原型的标签
       --fields=+iaS  : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
       --extra=+q     : 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全
# vim自动补全功能的测试
       # 为了测试自动补全功能,我们先下载C++一份C++标准库的源代码。
       lingd@ubuntu:~$ sudo apt-get install build-essential
       # 然后在/usr/include/c++下就可以找到标准库的头文件了。
       lingd@ubuntu:~$ cd /usr/include/c++
       lingd@ubuntu:/usr/include/c++$ ls

       # 在此文件夹下生成能与OmniCppComplete配合运作的tags文件
       lingd@ubuntu:/usr/include/c++$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
       lingd@ubuntu:/usr/include/c++$ ls

       # 在vim的配置文件中如下内容,然后在编程的时候就可以使用自动补全功能了。
       lingd@ubuntu:/usr/include/c++$ vi ~/.vimrc
       set tags+=/usr/include/c++/tags

更多功能通过在Vim命令行下运行"help omnicppcomplete"查询。

Vim十大必备插件_第5张图片

5. SuperTab安装与配置
       SuperTab使Tab快捷键具有更快捷的上下文提示功能。跟OmniCppComplete一样,SuperTab也是一个Vim插件。

       安装步骤:
       1) 从http://www.vim.org/scripts/script.php?script_id=1643下载安装包。

    2) 这个安装包跟先前的几个Vim插件不同,它是一个vmb文件。用VIM打开此文件($ vim supertab.vmb),在命令行输入:so %即可。

    3)在.vimrc文件中进行配置

"-- SuperTag setting --
   let g:SuperTabDefaultCompletionType="context"

       SuperTab安装完成。
       SuperTab使用很简单,只要在输入变量名或路径名等符号中途按Tab键,就能得到以前输入过的符号列表,并通过Tab键循环选择。
       使用SuperTab后,<Tab>键缩进不能用了, 如果前面有字符按下<Tab>键后就会进行补全, 而不是缩进, 如果哪位朋友知道, 请一定记得告诉我[email protected]

6. Winmanager,NERDTree和MiniBufExplorert安装与配置

       这三个插件,主要优化布置VIm的界面。NERDTree 提供树形浏览文件系统的界面, MiniBufExplorer 提供多文件同时编辑功能,而 Winmanager将这NERDTree界面和Taglist界面整合起来,使Vim更像VS!

       安装步骤:

        1) 从http://www.vim.org/scripts/script.php?script_id=1658

           http://www.vim.org/scripts/script.php?script_id=159

           http://www.vim.org/scripts/script.php?script_id=95下载安装包。

    2)将NERDTree安装包解压,把解压后的文件夹复制到在~/.vim目录,提示重名时选择合并。

    3)进入~/.vim/doc目录,在Vim下运行"helptags ."命令。

    4)MiniBufExplorer只有一个.vim文件,将其拷贝到~/.vim/plugin目录。

       5)Winmanager安装与NERDTree步骤相同。

       6)在.vimrc文件中进行配置。

    
 "-- WinManager setting --
   let g:winManagerWindowLayout='FileExplorer|TagList' " 设置我们要管理的插件
   "let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim
   nmap wm :WMToggle<cr>

"--NERDTree setting--
   let g:NERDTree_title="[NERDTree]" 
   "let g:winManagerWindowLayout="NERDTree|TagList" 
     
   function! NERDTree_Start() 
       exec 'NERDTree' 
   endfunction 
     
   function! NERDTree_IsValid() 
       return 1 
   endfunction 

 " -- MiniBufferExplorer setting--
   let g:miniBufExplMapWindowNavVim = 1 " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
   let g:miniBufExplMapWindowNavArrows = 1 " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
   let g:miniBufExplMapCTabSwitchBufs = 1 " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
   "let g:miniBufExplMapCTabSwitchWindows = 1 " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;
   let g:miniBufExplModSelTarget = 1   " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer

       三个插件安装完成。
       现在进入我们的项目目录,打开Vim,按下组合快捷键w-m就可以我们的崭新的Vim了!再次按下w-m就可关闭界面。
MiniBufferExplorer常用命令
       <Tab> 移到上一个buffer
       <Shift-Tab> 移到下一个buffer
       <Enter> 打开光标所在的buffer
       d  删除光标所在的buffer
WinManager常用命令
       wm打开/关闭WinManage
       文件浏览器命令(在文件浏览器窗口中使用)
       <enter>或双击 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
       <tab>  如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
       <F5> 刷新列表
       - 返回上一层目录
       c 使浏览目录成为vim当前工作目录
       d 创建目录
       D 删除当前光标下的目录或文件
       i 切换显示方式
       R 文件或目录重命名
       s 选择排序方式
       r 反向排序列表
       x 定制浏览方式, 使用你指定的程序打开该文件
NERDTree常用命令
       回车,打开文档;r,刷新工程目录文件列表;I,显示或隐藏隐藏文件

7. QuickFix安装与配置

    Cscope查找有一个显示查询结果的窗口, 这个窗口中列出了查询命令的查询结果, 用户可以从这个窗口中选择每个结果进行查看, 这个窗口叫"QuickFix"窗口, 以前也是一个vim的插件来的, 只不过现在成了vim的标准插件, 不用去安装了, QuickFix窗口的主要作用就是上面看到的那个功能: 输出一些供选择的结果, 可以被很多命令调用, 更详细的介绍和使用方法见help quickfix件。

QuickFix常用命令

       :cw调出QuickFix窗口
       :cn       // 切换到下一个结果
       :cp       // 切换到上一个结果
Vim十大必备插件_第6张图片

8. Grep安装与配置

    进行工程内全局查找,可以借助此插件实现。

       安装步骤:

        1) 从http://www.vim.org/scripts/script.php?script_id=311下载安装包。

    2) 把grep.vim 文件复制到 ~/.vim/plugin 文件夹。

    3)在.vimrc文件中进行配置。

 "-- grep setting --
   nnoremap <silent> <F4> :Grep<CR>"
       taglist安装完成。
      将光标移到要grep的 地方上, 然后按下F4键。
Vim十大必备插件_第7张图片

VIM常用配置及插件整理
在最下面的命令行会显示:

Search in files: *

VIM常用配置及插件整理
是问你搜索范围, 默认是该目录下的所有文件, 此时你还可以编辑该行, 比如你只想搜索源码文件:

Search in files: *.c *.h

VIM常用配置及插件整理
然后在按下回车, 会在弹出的QuickFix窗口中列出所有符合条件的搜索结果, 你可以在其中查找你想要的结果,
Vim十大必备插件_第8张图片
9. A插件安装与配置

    c/h文件间相互切换。

       安装步骤:


        1)从http://www.vim.org/scripts/script.php?script_id=31下载安装包。

    2)将将a.vim 复制到 ~/.vim/plugin 文件夹中。

    3)在.vimrc文件中进行配置。

    "-- A setting --
   nnoremap <silent> <F12> :A<CR>

      A安装完成。
常用命令

:A 在新Buffer中切换到c/h文件
:AS 横向分割窗口并打开c/h文件
:AV 纵向分割窗口并打开c/h文件
:AT 新建一个标签页并打开c/h文件

Vim十大必备插件_第9张图片

10. c-support安装与配置

       C.vim即C-Support vim,能够帮助C程序员很好的完成一些重复性的工作,节约时间,并保护你的键盘。插件作者Fritz Mehner,编写c.vim的宗旨是“Write and run programs. Insert statements, idioms, comments”.    

安装步骤:

        1)从http://www.vim.org/scripts/download_script.php?src_id=9679下载安装包。

    2)将cvim安装包解压,把解压后的文件夹复制到在~/.vim目录,提示重名时选择合并。

    3)在.vimrc文件中进行配置。

"-- c-support setting --
 "在.vimrc中用命令filetype plugin on激活插件。
 "$ vim ~/.vim/c-support/templates/Templates 可改变头说明
 "快捷键帮助信息详见doc的pdf文档

       C-Support安装完成。

Vim十大必备插件_第10张图片

Vim十大必备插件_第11张图片













你可能感兴趣的:(Vim十大必备插件)