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. https://github.com/
  2. http://vim-scripts.org/vim/scripts.html

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,再来看看可选的键值对选项是什么?

  1. rtp
  2. name
  3. 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开发环境配置的主要内容,如果未能解决你的问题,请参考以下文章

Linux 开发工具配置(持续学习更新ing……)

如何让vim编辑器永久显示行号和命令大全

如何配置vim的python开发环境

vim模式如何关闭回绕

配置vim开发环境

命令历史