VIM开发环境配置
Posted 小马识图
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VIM开发环境配置相关的知识,希望对你有一定的参考价值。
vim作为Linux系统下的开发神器,历史悠久. 在今天,vim还能不能继续发扬光大,这个不是这篇文章讨论的话题。 本文主要是记录在Linux下围绕vim的开发环境的配置,以便自己以后查询,也方便需要的朋友借鉴。
vim插件管理系统
vim的插件是vim生态系统的重要组成部分, 它的重要性就不说了。 一直以来vim都没有能够形成官方的统一的插件管理机制。取而代之的是, 用户首先将插件下载解压到 ~/.vim 目录下,然后再在~/.vimrc文件中配置和启用。 这一做法随着Pathogen的引入有了一定的改善。 Pathogen提倡标准的插件目录结构, 安装流程来简化新插件的安装。Pathogen是vim下的第一个插件管理系统, 今天我们介绍的主角叫Vundle, 它是在Pathogen的基础上改进而来的插件管理系统。
Vundle
Vundle是Vim bundle的缩写, Vundle可以帮助你:
1. 在.vimrc中配置及管理插件
2. 流水线式安装插件
3. 自动升级插件
4. 在插件仓库中搜索插件
5. 卸载不用的插件
6. 以上命令除了通过命令行完成外,Vundle也提供交互模式来完成相关动作。
一句话概括,就是vim模式下的apt系统。
安装及配置Vundle
- 打开命令行,安装Vundle:
>>git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
- 在~/.vimrc最上面,黏贴下面的一段配置:
set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
" Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
" Plugin 'L9'
" Git plugin not hosted on GitHub
" Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
" Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
" Plugin 'rstacruz/sparkup', 'rtp': 'vim/'
" Install L9 and avoid a Naming conflict if you've already installed a
" different version somewhere else.
" Plugin 'ascenator/L9', 'name': 'newL9'
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
set rtp+=~/.vim/bundle/Vundle.vim
设置了rtp
变量,是vim下插件的运行时路径(Runtime Path),有点类似于$PATH
环境变量,这里首先将Vundle自身添加进运行时路径,这样vim启动的时候就能够运行Vundle的命令。
call vundle#begin()
和 call vundle#end()
这两个调用之间列出所有需要Vundle管理的插件。 Plugin 'VundleVim/Vundle.vim'
把Vundle自身列入其中,因为Vundle本身也是vim插件,也需要升级维护。 下面注释掉的部分是一些vim插件,每一个插件是一行, 由Plugin
命令起始, 参数是URI
,以及少量可选参数, 以键值对的形式出现:
>> Plugin 'URI' ['key' : 'value']
Plugin语法
这里的'URI'
是插件所在的路径, 可以是online 仓库的相对地址,也可以是本地地址。对于online仓库, 目前主要是两个:
1 当Plugin
命令中的 URI
是以 user/repo
的形式出现的时候, 表示使用Github仓库:
Plugin 'VundleVim/Vundle.vim' => https://github.com/VundleVim/Vundle.vim
2 如果出现的URI
是一个不包含"/"
的单词,表示是一个vim-scripts插件。注意这里的vim-scripts仓库实际上也是映射到Github路径:
Plugin 'ctrlp.vim' => https://github.com/vim-scripts/ctrlp.vim
3 还有一种形式的online仓库是一个git 地址,此时Vundle只会原封不动的使用这个地址来clone插件:
Plugin 'git://git.wincent.com/command-t.git'
4 最后你还可以使用本地插件, 使用绝对路径指向插件所在的路径:
Plugin 'file:///path/from/root/to/plugin'
解释完URI,再来看看可选的键值对选项是什么?
- rtp
- name
- pinned
- rtp 选项前面已经说了表示插件运行时路径,有时候vim插件可能不只是一个vim脚本,可能是一整个文件夹,这样整个插件内容就如同一个普通的.git仓库一样,rtp选项就是用来指定插件脚本相对于.git 仓库根目录的路径。
Plugin 'git_URI', 'trp' : "some/subdir/'
- name 选项表示设置clone插件时的文件夹名称,用于git clone时显示指定文件夹的名称。 这个可以用于同一个插件多个版本同时使用的情况下。
Plugin 'git_URI', 'name': 'newPluginName'
- pinned 当设置为1时,表示禁止Vundle对该插件使用任何git 操作。 由用户自身手动clone和更新该插件,Vundle只要进行其他的管理即可,比如讲插件路径添加进运行时路径,查询安装插件的时候显示该插件等等。
Plugin 'mylocalplugin', 'pinned': 1
Vundle的插件管理命令
:PluginInstall
安装.vimrc中指定的所有插件, 并自动启用。:PluginInstall unite.vim
安装指定的插件, 类似于apt-get install,在仓库中搜索插件。支持Tab键自动补齐。通过这种方式安装的插件并不是永久性的,需要在~/.vimrc中指定,才能够永久安装并自动被Vundle管理。:PluginInstall unite.vim tpope/vim-surround tpope/vim-fugitive
安装多个插件,中间使用空格分隔。:PluginUpdate
安装或者更新.vimrc中指定的所有插件。:PluginUpdate vim-surround vim-fugitive
指定更新插件。:PluginSearch foo
在Vim-scripts中搜索插件并显示结果。 要求系统安装了curl
命令。:PluginSearch! foo
先更新插件列表再搜索:PluginList
显示安装插件列表:PluginClean
删除所有在插件安装路径下但并没有在.vimrc下使用的插件,删除前需要用户确认。:PluginClean!
删除所有在插件安装路径下但并没有在.vimrc下使用的插件, 无确认。
Vundle交互模式
所有罗列Vundle插件的命令在执行之后都会在分隔页面显示一个列表,这时Vundle进入交互模式.比如,使用PluginSearch命令搜索cscope:
>>:PluginSearch! cscope
"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list
"Search results for: cscope
Plugin 'cscope.vim'
Plugin 'cscope_plus.vim'
Plugin 'cscope-wrapper'
Plugin 'cecscope'
Plugin 'ACScope'
Plugin 'cscope_win'
Plugin 'cscope-quickfix'
Plugin 'cscope-menu'
Plugin 'autoload_cscope.vim'
Plugin 'cscope_macros.vim'
要安装某个插件,将光标移动到相应位置,按’i’键开始自动安装。
ctags
关于ctags的作用就不多说了,直接上配置方式:
- ctags 安装
sudo apt-get install exuberant-ctags
- 生成ctags数据库
cd prj/src
ctags -R .
vim 打开任意源文件
使用ctags命令开始浏览代码
Taglist
- 安装taglist
:PluginSearch Taglist
"Keymap: i - Install plugin; c - Cleanup; s - Search; R - Reload list
"Search results for: Taglist
Plugin 'taglist-plus'
Plugin 'taglist.vim'
在交互模式下安装'taglist-plus'
- 开始使用Taglist
以上是关于VIM开发环境配置的主要内容,如果未能解决你的问题,请参考以下文章