转载于:https://blog.csdn.net/andre617/article/details/53496490#%E8%84%9A%E6%B3%A8

由于YCM需要vim支持python,需要自己编译vim,所以建议先装YCM,关于YCM的安装比较多,单独写了一篇。

目标安装:

  plugin:管理vim插件

  auto-pairs:用于括号匹配

  NERDTree:显示目录树

  MiniBufExplorer:显示已打开文件

  ctags:建立代码索引

  taglist:列出代码的函数,变量,宏

准备工作

ubuntu安装

sudo apt-get install git

第一个插件pathogen

为了不让插件安装后目录显得凌乱,我们很有必要安装一个管理插件的插件,这样功能的插件有好几个,这里只推荐一个pathogen

项目地址
https://github.com/tpope/vim-pathogen

安装
可以通过git安装,也可以直接下载插件文件,由于这个插件只有一个文件,我们选择后者,而该插件的说明文档上也是用的这种方法。

mkdir -p ~/.vim/autoload ~/.vim/bundle &&
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

然后,就没有然后,这个插件就安装完了。是不是觉得so easy! 不过先别急,我们还要对插件进行一些配置,用vim打开~/.vimrc,输入如下三行类容

execute pathogen#infect()
syntax on
filetype plugin indent on

保存退出,这个插件的安装配置就完成了,怎么验证插件有没有生效呢,别急,后面有的是机会验证。我们先来讲讲vim插件是个什么东西。

此时你的~/.vim目录结构应该是这样的

├── autoload
│ └── pathogen.vim
└── bundle

可见~/.vim目录下是有两个目录,其中autoload放的是pathogen插件,所谓的插件其实就是一个脚本,当vim启动时,它会自动加载~/.vim/autoload目录下的脚本,由于你~/.vimrc里配置了execute pathogen#infect(),所以它会去自动的执行脚本里这个函数,至于这个函数是怎么实现的,我们不用管它,总之这个函数的功能就是去加载~/.vim/bundle目录下你安装的所有插件,pathogen的管理方法大致就是这样,而我们也看到,vim的插件其实就是一个脚本文件,丰富一点的还会带有说明文档等其它内容,后面我们碰到了再讲解。

auto-pairs

项目地址
https://github.com/jiangmiao/auto-pairs(感兴趣的可以看)

功能
自动匹配括号、引号等

安装

git clone git://github.com/jiangmiao/auto-pairs.git ~/.vim/bundle/auto-pairs

这样就将auto-pairs在github上的项目文件下载到了~/.vim/bundle/auto-pairs目录下

测试
随便打开一个文件,输入左括号’(‘,看右括号是不是自动出现了,然后删除左括号,看右括号是不是也被删除了。当然功能远不止这些,但常用的就这几点。

NERDTree

项目地址
https://github.com/scrooloose/nerdtree

功能
显示目录树

安装

git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle

此时~/.vim/bundle/nerdtree下应该有如下几个目录和文件

autoload
doc
lib
nerdtree_plugin
plugin
README.markdown
syntax

这几个目录是vim默认的插件目录,如果我们不是通过pathogen加载插件,就需要在~/.vim目录下创建对应的这几个目录,并将NERDTree对应的文件拷到相应的目录,这样每个目录下会放置多个插件的内容,比如~/.vim/doc下就会放置所有插件的帮组文档,而我们通过pathogen来管理,每个插件的所有内容都放在同一个目录中,比如这里的NERDTree插件的内容我们下载到了~/.vim/bundle/nerdtree下,直接删除这个目录即可删除插件,如果后续插件有更新,在该目录下通过git命令也可以很容易更新到最新版本。

打开vim,在命令行模式下输入:Helptags载入插件的帮组文档,或者用:helptags help_dir载入指定目录的帮组文档,其中help_dir是你需要加载的插件帮组文档所在的目录,比如这里是~/.vim/bundle/nerdtree/doc

测试
用vim打开一个文件,在命令行模式下输入:NERDTree,然后回车,窗口左侧就出现了vim工作目录的目录树,如下图所示

将光标置于NERDTree窗口,按’?’可查看帮助,NERDTree的操作很简单,通常是将光标置于一个目录/文件上,通过一个按键来操作,下面列出几个常用按键及其对应的操作

文件相关操作
o : 在光标所在的上一个窗口打开文件,并将光标置于新打开的窗口
go : 预览文件,光标停留在NERDTree窗口中
t : 在新标签中打开文件并激活
gt : 在新标签打开文件,光标留在NERDTree窗口中
i : 水平分割打开文件
gi : 水平分割预览
s : 垂直分割打开文件
gs : 垂直分割预览 目录树相关操作
o : 展开/关闭目录
O : 递归展开目录。慎用,如果目录层级多,打开会很慢
x : 关闭父目录
C : 切换光标所在目录为根目录
u : 切换目录树的根目录为上层目录
U : 切换目录树的根目录为上层目录,并保持旧的目录树的状态
r : 刷新当前目录
R : 刷新当前根目录(这个在新加入文件后会用到)
cd : 切换vim工作目录为光标所在目录(命令模式下:pwd可查看当前工作目录)

为了方便打开NERDTree,我们可以设置快捷键,打开~/.vimrc,插入如下一行

map <C-n> :NERDTree<CR>

这样,当打开vim时,只要输入ctrl+n即可打开NERDTree

MiniBufExplorer

项目地址
http://www.vim.org/scripts/script.php?script_id=159

功能
显示已打开的buffer

安装
以6.3.2版本为例,根据项目地址可以找到对应版本的下载链接

mkdir -p ~/.vim/bundle/minibufexplorer/plugin && wget "http://www.vim.org/scripts/download_script.php?src_id=3640" -O ~/.vim/bundle/minibufexplorer/plugin/minibufexpl.vim

测试
用vim打开一个文件,此时看不到minibufexplorer窗口,因为默认是只有一个buffer时不显示窗口的,在命令行模式下通过:vsp filename打开另一个文件(或者用NERDTree浏览打开其它文件),看看此时窗口上方是不是出现了MiniBufExplorer的窗口,如下所示

我们先来解释一下什么叫buffer,vim为每个打开的文件都创建了一个buffer,这个buffer存储在内存中,为了下次打开文件时快速加载,比如我们通过NERDTree浏览并打开了多个文件,即便某些文件你退出了编辑,它的buffer仍旧是存在的,在命令模式下,我们输入:ls可以查看打开的buffer列表,每一行前面的数字对应buffer的编号,通过输入:b N,其中N代表buffer编号,可以打开对应的buffer。对应上面的截图,我们打开了两个文件,此时minibufexplorer窗口显示有两个buffer,即便我们关闭一个文件,这两个buffer仍然存在,将光标移到某个buffer的名称上,回车可打开对应的buffer,按d可删除buffer,具体的操作可以直接阅读插件文件,路径为~/.vim/bundle/minibufexplorer/plugin/minibufexpl.vim

配置
在~/.vimrc文件中加入如下命令

let g:miniBufExplMaxSize = 

该配置含义为minibufexplorer窗口最大高度为2行,默认是没有上限的,你打开的buffer足够多,一会一直增长下去,为了方便阅读我一般将它设为2,其它配置不怎么用到,需要用的时候可以参考插件文件,并在~/.vimrc中添加配置

minibuf间使用 Tab 移动

ctags

这个并不是插件,而是可执行程序,是用来对代码建索引,方便查找的,有些Linux版本是自带ctags的,如果没有,按如下方式安装

sudo apt-get install ctags

如果安装失败,看是不是因为/usr/bin/ctags文件已经存在,可以先mv走,然后再执行

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

ctags -R ./      递归扫描

转到函数定义 <C-]> 返回<C-T> 或 <C-O>

taglist

taglist是vim的一个插件,可以将代码内的函数、变量等按规律列出来,方便查找

下载地址
http://www.vim.org/scripts/script.php?script_id=273,或者直接按如下方式下载并安装

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

其中plugin目录下为插件文件,doc目录下为说明文档。打开vim,在命令行模式下输入:helptags ~/.vim/bundle/taglist/doc可以加载说明文档,然后输入help taglist.txt则可以显示说明文档

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

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

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

如果打开过程中出现问题,例如

Taglist: Failed to generate tags for /Users/Zorba/Dropbox/RubymineProjects/rcafe/app/controllers/posts_controller.rb /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ctags: illegal option – -^@usage:  
ctags [-BFadtuwvx] [-f tagsfile] file …^@

就要重新安装一遍ctags

VIM配置IDE的更多相关文章

  1. Vim配置IDE开发环境

    我的vim IDE界面: 1.安装Vim和Vim基本插件首先安装好Vim和Vim的基本插件.这些使用apt-get安装即可:lingd@ubuntu:~/arm$sudo apt-get instal ...

  2. Vim配置及说明——IDE编程环境

    Vim配置及说明——IDE编程环境 Vim配置及说明——IDE编程环境 1.基本及字体 2.插件管理 3.主题风格 4.窗口设置 5.目录树导航 6.标签导航 7.taglist 8.多文档编辑 9. ...

  3. 将VIM配置成强大的IDE(二)

    将VIM配置成强大的IDE(二) 前面我们已经安装好了vundle这一款强大的插件管理工具. 下面,当然是配置我们需要的插件了. 在VIM下面通过命令 help vundle 我们可以知道,VUNDL ...

  4. vim配置轻量级IDE

    安装VIM 安装YouCompleteMe的时候, 需要VIM的版本比较高, 一般一些Linux长期支持版的Vim包就比较老, 所以可能需要编译安装. 卸载之前系统中安装的版本: CentOS/Fed ...

  5. 草稿-把vim变成IDE

    从昨天下午到现在一直在研究vim,初学者,从vim最基本的命令开始看起的.是通过vimtutor学习的. 看到最后一章的时候,发现原来vimtutor中的知识知识vim中的冰山一角,vim真正的强大之 ...

  6. vim配置总结

    本博文转自:http://www.cppblog.com/runsisi/archive/2013/04/06/199152.html? opt=admin 12年的最后一天配置了一下公司RHEL上的 ...

  7. kali2.0安装及使用笔记(附带vim配置,长期更新)

    作者:陈栋权 时间:16/08/19 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 如有特别用途,请与我联系邮 ...

  8. 如何用Vim搭建IDE?

    推荐:http://harttle.com/2015/07/18/vim-cpp.html 转自:http://harttle.com/2015/11/04/vim-ide.html 一年前我从Vim ...

  9. acm的ubuntu (ubuntu16.04 安装指南,chrome安装,vim配置,git设置和github,装QQ)

    日常手贱把ubuntu14.04更新到了16.04,然后就game over了.mdzz,不然泥萌也看不到这篇博客了=.= 然后花了些时间重装了一个16.04版的,原来那个14.04的用可以用,就是动 ...

随机推荐

  1. python字符转码

    字符的编码与转码 demo UTF-8 转GBK python2.7 默认编码ASCII 没有转Unicode 直接转GBK 1 .系统的默认编码是ASCII , 程序的指定编码是UTF-8,在enc ...

  2. Python基础学习之字符串(1)

    字符串 由字符组成的序列,即字符串. 1.基本字符串操作 所有标准的序列操作(索引.切片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用: >>> website=' ...

  3. Unity3D转UE4指南

    坐标: Unity3D X - left, right Y - up, down Z - forwards, backwards Unreal Engine4 X - forwards, backwa ...

  4. Objectbox Box的getAll() 函数返回emptylist() 未判断导致崩溃

    最近使用了Objectbox作为新项目的数据库后台,Greendao开发团队新力作,但是Objectbox算是比较新的一个东西,现在资料也不多. 今天跟大家分享一个关于Box类的getAll()函数的 ...

  5. CFG的定义

    最近在CMU上NLP,好吧 对于见了很多年的CFG(Context-Free Grammar)发现又搞不懂是什么了 教材上写的是: mathematical system for modeling c ...

  6. android+nutz后台如何上传和下载图片

    android+nutz后台如何上传和下载图片  发布于 588天前  作者 yummy222  428 次浏览  复制  上一个帖子  下一个帖子  标签: 无 最近在做一个基于android的ap ...

  7. UIView设置阴影无效的原因之一

    本想在底部的按钮设置个阴影, 代码如下: self.layer.shadowColor = [UIColor blackColor].CGColor; self.layer.shadowOffset ...

  8. Mybatis中的DataSource配置

    dataSource 的类型可以配置成其内置类型之一,如 UNPOOLED,POOLED,JNDI. 1.如果将类型设置成 UNPOOLED,MyBatis 会为每一个数据库操作创建一个新的连接,并关 ...

  9. ORB-SLAM使用方法

    preparation:按照官網步驟完成ORB的安裝. 1.修改Camera calibration參數:到~/ORB_SLAM/Data/Settings.yaml修改 2.開啟終端機    -&g ...

  10. Pj Immediate Decodability

    判断一个串是否是其他的前缀 我们需要建立一颗tire树 在插入边的时候,如果遇到一个其他串的结尾,那么就说明至少有一个串,是插入串的前缀.如果在插入完后没有新增的节点,那么插入的串就是其他串的前缀 # ...