我的VIM基本配置(长期更新)

[TOC]

我用过的编辑器很多,用的多的有Eclipse、Sublime、VIM。由于Eclipse太重量级现在已经抛弃了。

所以现在win下主要用sublime,gvim,Linux下还是用VIM。

VIM配置很麻烦,为了在以后切换环境的时候能快速搭建起编辑的环境,下了很久决心要把这一系列的操作形成一套傻逼流程,免得以后忘记了又得重新查资料。

linux环境下「简介」

在每个用户的文件夹内都有一个专属的VIM配置方案,分别放在

~/.vim/ #插件
~/.vimrc #插件配置

在.vimrc配置文件中,主要分两部分,第一部分为基本配置,第二部分为插件。按照按需添加的原则,目前形成了一套极简的配置方案。目前的基本配置方案如下:(”为VIM中的注释标志)

set nu
set expandtab           "TAB转空格
set tabstop=4           "TAB为4个空格
set shiftwidth=4        "换行缩进4个空格
set smarttab            "一次backspace删除shiftwidth宽度的空格

set list
set listchars=tab:>-,trail:-    "设置tab为>---式样

插件管理

  1. 目前使用vundle管理插件,使用了这个后能够全自动化的管理插件。下面是安装vundle的步骤:[B]

从git下载vundle

   git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  1. 把vundle下载到插件目录下,然后进行基本的配置
   set nocompatible              " vi不兼容, required
   filetype off                  " required,关闭文件类型检测
   
   " 初始化插件
   set rtp+=~/.vim/bundle/Vundle.vim
   call vundle#begin()
   " 接下来开始让各种插件生效,格式如下,早期版本中使用的格式是 Bundle 'a/b'类似格式,目前是Plugin 'a/b'
   
   " 第一个写vundle本身的插件管理, required
   Plugin 'gmarik/Vundle.vim'
   
   " 下面是插件在不同地方的时候的各种写法
   " 所有的插件命令都必须在这两个标记之间 vundle#begin/end.
   " 在GitHub的情况
   Plugin 'tpope/vim-fugitive'
   " 在 http://vim-scripts.org/vim/scripts.html的情况
   Plugin 'L9'
   " 在其他git的情况
   Plugin 'git://git.wincent.com/command-t.git'
   " 运行在自己的服务器上的情况
   Plugin 'file:///home/gmarik/path/to/plugin'
   
   " 所有插件都必须在下面的标记前
   call vundle#end()            " required
   filetype plugin indent on    " required,允许VIM为不同类型的文件定义不同的缩进格式
   " To ignore plugin indent changes, instead use:
   "filetype plugin on
   "
   " 安装插件的命令,以前是BundleList等,现在改了
   " :PluginList          - list configured plugins
   " :PluginInstall(!)    - install (update) plugins
   " :PluginSearch(!) foo - search (or refresh cache first) for foo
   " :PluginClean(!)      - confirm (or auto-approve) removal of unused plugins
   "
   " see :h vundle for more details or wiki for FAQ
  1. 上面的配置是一个基本的格式,完成上面两步后,如果我要安装一个TabBar的插件,首先是在上面适当的位置加入
   Plugin 'humiaozuzu/TabBar'

*然后在VIM中运行:PluginInstall就能直接安装,**如果要卸载某插件*,只要在配置中去掉该行,然后运行:PluginClean就行,会在目录下自动删除该文件夹,非常绿色。升级运行:PluginInstall! [C]

目前安装的插件(按照我极简的变态心理,除非不装写不下去,否则坚决不安装)

  1. auto-pairs自动配对

  2. neocomplcache.vim自动补全插件,目前他们推荐Vim 7.3.885+版本使用neocomplete.vim,不过我还没用过。使用的时候按照我的爱好做了如下配置,就放到Plugin ‘Shougo/neocomplcache.vim’的下面

   let g:neocomplcache_enable_at_startup = 1 "自动启动
   inoremap <expr><TAB>  pumvisible() ? "<C-n>" : "<TAB>" "使用TAB键替代Ctrl+n键,在插件中,C+n和C+p分别表示在下拉补全中向下和向上选择,其中的pumvisible()表示弹窗可见
   inoremap <expr><CR>  pumvisible() ? neocomplcache#close_popup() : "<CR>" "使用ENTER键在弹窗可见的时候补全且不做换行
  1. ctags是vim内置的一个功能[A],不过要首先安装ctags,现在cscope也很骚,对类支持更好,不过不是VIM内置支持的嫌麻烦我现在还没尝试过。安装ctags在centerOS下一般直接yum install ctags就行,也可以去手动编译,去ctags官网,使用./configure,make,make install三部曲安装。安装好后,到项目根目录下执行ctags -R生成索引文件,然后使用ctrl+]和ctrl+o进行函数查找跳转和跳回,或者更新索引ctags -Ra这些快捷键各大IDE通用。ctags的快捷键:
   Ctrl+] #这个命令可以让光标直接定位到$tag的定义的地方
   Ctrl+o #回到最初打开文件的位置
   ts #列出哪些地方出现有$tag关键字,当定义出现了多个的情况
   tn #如果打开有tag出现在多处地方,就可以用tn切换,移动到下一处
   tp #与上面的命令作用是一样的,移动方向相反
  1. DoxygenToolkit是一个函数和文件申明的插件,使用:Dox 函数注释 :DoxAuthor 文件申明

  2. taglist是一个缩略显示全局函数类等定义的插件,使用:TlistOpen打开

LINUX环境下「流程」

  1. 已经托管在github,https://github.com/blue-cat/.vimrc

  2. 安装ctags,方法见[A]

或者不下载,直接使用配置文件,在用户目录下建立.vimrc,并按照[B][C]执行插件安装程序

*在vim中遇到文件编码问题按照上面的设置为UTF-8,能把其他编码的文件放到缓冲区iconv成UTF-8展示出来而不乱码。然后再设置 set fileencoding=utf-8就行了

VIM快捷键设置

使用:map查看所有快捷键,:help map查看映射说明

看个例子,写在.vimrc的插件配置内

nmap tl :Tlist<CR>

nmap代表Normal模式下的map映射,还有其他映射关系:

Command 命令 Normal 常规模式 Visual 可视化模式 Operator Pending 运算符模式 Insert Only 插入模式 Command Line 命令行模式
:map y y y
:nmap y
:vmap y
:omap y
:map! y y
:imap y
:cmap y

*还有一种noremap代表非递归映射,常规比如a映射到b,b映射到c,那么相当于a映射到c,非递归可以消除这种递归。inoremap代表插入模式下的非递归映射。

tl代表使用tl键替代,还有其他键

键表(大小写都行) 小键盘 0 到 9 Shift+键 ,如分别代表shift+d和shift+tab键 Control+键 Alt+键 termcap 里的 “xx” 入口键

还有,等,,,,退格等,前后相连的比如tl表示连续按t键和l键,而表示同时按ctrl+d键,还能使用这样的三键同时按的方法

特殊参数: \1. 映射将只局限于当前缓冲区(也就是你此时正编辑的文件)内 \2. 指执行键绑定时不在命令行上回显,既不在命令行上显示 \3. 一般用于定义特殊键怕有副作用的场合 \4. . 如果定义新映射的第一个参数是,那么参数会作为表达式来进行计算,结果使用实际使用的//TODO \5. 一般用于定义新的键映射或者缩写命令的同时检查是否该键已经被映射,如果该映射或者缩写已经存在,则该命令会失败 它们必须映射命令的后边,在其他任何参数的前面。

:Tlist代表把前面的键映射成这儿的操作,这儿代表的是输入:Tlist然后按回车

VIM常用自用快捷键汇总

  1. ctrl+],ctrl+o在ctags里查找和退回函数定义
  2. ctrl+i,ctrl+o光标向前跳和往后跳
  3. F12给函数加预定义注释
  4. F11给文件加注释
  5. tl打开和关闭taglist
  6. ctrl+shift+j为该行添加//注释,原本想使用ctrl+/但是发现用不了
  7. ctrl+为该行取消注释
  8. F10粘贴模式切换

LINUX环境下「资料」

1,https://github.com/humiaozuzu/dot-vimrc

2,http://www.oschina.net/code/snippet_574132_13357 linux和win通用

LNMP手动编译文档 →