Vim优秀插件推荐

C++开发常用Vim插件梳理

Posted by baiyf on January 15, 2019

Vim优秀插件推荐

Vim的安装

  • Mac平台:

    安装包管理工具homebrew

     ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
    

    通过brew安装vim

    brew install vim
    
  • Centos平台:

    yum install vim
    

spf13

spf13是一个vim插件合集,包括vim插件管理工具vundle,集成了vim界最受欢迎的一些插件。

安装

curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh

插件管理

#添加插件
echo Bundle \'spf13/vim-colors\' >> ~/.vimrc.bundles.local
#然后进入vim,在正常模式下输入,等待安装完成
:BundleInstall
========================================================
#删除插件
echo UnBundle \'AutoClose\' >> ~/.vimrc.bundles.local
#然后进入vim,在正常模式下输入,完成删除
:BundleClean!
  1. Undotree

    使用,u查看近期文件操作记录

  2. NERDTree

    使用,e查看文件目录信息,或者ctrl+e,使用ctrl+w+w切换文件

  3. ctrlp

    快速打开文件,使用ctrl+p搜索文件

  4. Surround

    这个插件用来操作闭合标签。新手快键键形如:cs"<p>。例如在代码"hello"中输入cs"<p>,则会把双引号替换为<p>标签。

  5. NERDCommenter

    注释插件。新手快键键,c<space>,注释光标所在代码。

  6. neocomplete

    自动完成插件。无需快捷键,在使用中自动会提示。如果需要代码片段补全,则使用ctrl+k。例如输入for后按下ctrl+k则提示代码块,按tab进行跳进。

ctags

  • Mac安装:

    brew install ctags
    
  • Centos安装:

    yum install ctags
    

创建索引:在你代码的根目录执行如下命令,会生成一个tags文件,此时在代码根目录下打开一个文件(vim默认只加载工作目录下的tags文件),将光标置于一个函数或结构体名字上,按ctr+]即可跳转到该名称的定义处,如果出现多个选项,可以输入编号选择对应跳转的地方,按ctr+o可回到光标之前的位置

ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

taglist

功能

将代码内的函数、变量等按规矩列出来,方便查找

安装

cd ~/.vim/bundle && wget "http://www.vim.org/scripts/download_script.php?src_id=19574" -O taglist.zip && unzip taglist.zip -d taglist

这样就生成了~/.vim/bundle/taglist目录,该目录的结构为

taglist
├── doc
│   └── taglist.txt
└── plugin
    └── taglist.vim

配置 打开~/.vimrc,输入如下内容

let Tlist_Show_One_File=1    “ 只展示一个文件的taglist
let Tlist_Exit_OnlyWindow=1  “ 当taglist是最后以个窗口时自动退出
let Tlist_Use_Right_Window=1 " 在右边显示taglist窗口
let Tlist_Sort_Type="name"   “ tag按名字排序

这几行配置看名字就能知道什么意思,引号后边是说明,在vim配置文件里,双引号代表注释,类似于C语言里的/

测试 打开一个文件,在命令行模式下输入:TlistToggle即可显示taglist窗口

OmniCppComplete

这是一个对C++进行语法补全的插件,可以对函数、命名空间、类成员等进行补全,使用起来和绝大多数IDE差不多,不一样的是IDE为你做了很多你不知道的事情,而omni补全需要依赖tags文件,需要你用ctags命令自己生成

安装

cd ~/.vim/bundle && wget "http://www.vim.org/scripts/download_script.php?src_id=7722" -O omnicppcomplete.zip && unzip omnicppcomplete.zip -d omnicppcomplete

该命令会生成~/.vim/bundle/omnicppcomplete目录,目录结构为

├── after
│   └── ftplugin
│       ├── cpp.vim
│       └── c.vim
├── autoload
│   └── omni
│       ├── common
│       │   ├── debug.vim
│       │   └── utils.vim
│       └── cpp
│           ├── complete.vim
│           ├── includes.vim
│           ├── items.vim
│           ├── maycomplete.vim
│           ├── namespaces.vim
│           ├── settings.vim
│           ├── tokenizer.vim
│           └── utils.vim
└── doc
    └── omnicppcomplete.txt

打开vim,在命令行模式下输入:helptags ~/.vim/bundle/omnicppcomplete/doc即可加载说明文档,输入:help omnicppcomplete查看说明文档

对STL补全 上面的方式只能对自己的代码进行补全,是当我们要使用其它库比如STL甚至是第三方库时就无法补全,原因很简单,我们只对自己的代码建立了tags文件,想要对其它库进行补全,就必须对它们的源代码建立tags文件,所幸的是vim的插件编写者们早已解决了这个需求,并且他们专门针对STL头文件进行了修改,以便能更好的适应omni的补全,首先下载STL源代码,地址为http://www.vim.org/scripts/script.php?script_id=2358,可通过如下命令下载并解压

mkdir -p ~/.vim/tags && cd ~/.vim/tags && wget "http://www.vim.org/scripts/download_script.php?src_id=9178" -O - | tar jxvf -

这样就将STL的源码下载到了~/.vim/tags/cpp_src目录下,我们在该目录下执行ctags命令

ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

这样就生成了~/.vim/tags/cpp_src/tags这个文件,然后打开~/.vimrc进行如下设置

set tags+=~/.vim/tags/cpp_src/tags

该命令是设置tags文件的搜索路径,默认只有vim工作目录的tags文件,这样设置之后就会同时加载指定目录的tags文件,你可以在后面添加更多其它第三方库的tags文件,现在对STL的补全效果如下

在生成tags文件的基础山,按ctr+x ctr+o就可以自动补全