VIM 的配置和神一般的插件。

       刚开始工作的时候,主要是C和C++,使用VIM比较多,后来转到Android,主要使用IDE开发,VIM用的比较少,但是也有用到VIM的时候,总是遇到这样那样的问题,自动补全,文件查找,搜索什么的,然后就是各种插件,插件多了,冲突的问题就来了,问题是插件也不能解决一些问题,搞的很纠结。下决心苦学一番vim,看来我不是那种传说中的天赋异常的武林高手,折腾了一顿,没有什么结果,偃旗息鼓了。最近心血来潮,重新配置了一下vimrc, 终于有了一个满意的vimrc。
      一. 基本的配置:

  1. syn on "语法高亮
  2. set helplang=cn     "使用中文帮助文档
  3. set backspace=2
  4. set tabstop=4 "制表符的宽度
  5. set softtabstop=4
  6. set shiftwidth=4 "缩进的空格
  7. set autoindent     "自动缩进
  8. set cindent "C 插件
  9. set number "设置行号
  10. set ignorecase "忽略大小写 (查找字符串时)
  11. set nohlsearch "高亮显示 (查找字符串是,找到后高亮显示)
  12. set mouse=a "使用鼠标
  13. set ruler     "在右下角显示光标位置
  14. set showcmd     "显示未敲完的命令
  15. set cmdheight=1 "设定命令行的行数为 1
  16. set laststatus=2 "显示状态栏 (默认值为 1, 无法显示状态栏)
  17. set incsearch "在输入搜索的字符串同时就开始搜索已经输入的部分
  18. set nowrap "一行就一行,别弄到第二行去
  19. set sidescroll=10     "屏幕放不下时,按一次屏幕移动一个字符    
  20. set whichwrap=b,s,<,>,[,]     "跨行移动
  21. set fileformats=unix,dos
  22. set cursorline "突出显示当前行
  23. set showmatch "插入括号时,短暂地跳转到匹配的对应括号
  24. set matchtime=2 "短暂跳转到匹配括号的时间
  25. set smartindent "开启新行时使用智能自动缩进
  26. filetype plugin indent on "自动识别文件类型,用文件类型plugin脚本,使用缩进定义文件
  27. "set autochdir
映射了一些快捷键,模仿windows 的得文本操作:

点击(此处)折叠或打开

  1. "粘贴复制的一些操作
  2. vmap <C-c> "+y "选中状态下 Ctrl+c 复制
  3. nmap <C-c> "+yy "选中状态下 Ctrl+c 复制
  4. nmap <C-v> "+p "正常模式下粘贴
  5. nmap <C-a> ggvG "正常模式下全选
  6. vmap <C-x> dd<Esc> "正常模式下DEL

  7. nmap <leader>s :call SaveFile()<CR>
  8. imap <leader>s <ESC>:call SaveFile()<CR>
  9. vmap <leader>s <ESC>:call SaveFile()<CR>
  10. func! SaveFile()
  11.      exec "w
一些小技巧

点击(此处)折叠或打开

  1. "记忆上次打开文件的位置
  2. if has("autocmd")
  3.     autocmd BufRead *.txt set tw=78
  4.     autocmd BufReadPost * if line("‘\"") > 0 && line("‘\"") <= line("$") | exe "normal g‘\"

  5. autocmd BufWritePre * :%s/\s+\+$//e    "自动去除行尾空格 这个在gerrit 检查代码比较有用。
  6. set fileencodings=ucs-bom,utf-8,GB18030,GBK,GB2312                                                 "字符编码支持中文



二. 插件管理--Vundle
    vim下有各种各样的插件,每次换机器,都要重新配置一遍,后来发现了插件管理神奇 Vundle。
下载Vundle: git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

配置 vundle 。在vundle 中的插件主要分三类:
1.vimrc-script 网站上的插件    "Bundle ‘minibufexpl.vim‘
2.github 上的插件。               "Bundle ‘fholgado/minibufexpl.vim‘
3.自定义git上的插件。            "Bundle ‘https://github.com/Lokaltog/powerline‘
其实第二种也可以采用第三种方式管理,原理是一样的,都是git管理。


在vimrc 配置完插件以后,vundle 可以自动下载插件,自动更新。
重启vim,在vim执行命令::BundleInstall  自动安装插件。
在vimrc 中配置:map <silent> <F7> :!git clone https://github.com/gmarik/vundle.git  ~/.vim/bundle/vundle
连Vundle 也自动下载。

点击(此处)折叠或打开

  1. """""""""""""""""""""""""""""""""""VUNDLE setting"""""""""""""""""""""""""""""""""""""""""""
  2. set nocompatible " be iMproved
  3. filetype off "
  4.     set rtp+=~/.vim/bundle/vundle/
  5. call vundle#rc()

  6.     " let Vundle manage Vundle
  7.     Bundle ‘gmarik/vundle‘

  8.     " vim-scripts repos
  9.     "Bundle ‘minibufexpl.vim‘
  10.     "Bundle ‘bufexplorer.zip‘
  11.     "Bundle ‘taglist.vim‘
  12.     "Bundle ‘c.vim‘
  13.     "Bundle ‘winmanager‘
  14.     "Bundle ‘The-NERD-Commenter‘
  15.     "Bundle ‘snipMate‘
  16.     "Bundle ‘TxtBrowser‘
  17.     "Bundle ‘genutils‘
  18.     "Bundle ‘lookupfile‘
  19.     "Bundle ‘LeaderF‘
  20.     Bundle ‘The-NERD-tree‘
  21.     "Bundle ‘ctrlp.vim‘
  22.     "Bundle ‘cscope.vim‘
  23.     "Bundle ‘Tagbar‘

  24.     "github repos.
  25.     "Bundle ‘fholgado/minibufexpl.vim‘
  26.     "Bundle ‘bling/vim-airline‘
  27.     "Bundle ‘tpope/vim-fugitive‘
  28.     "Bundle ‘Shougo/neocomplcache.vim‘
  29.     "Bundle ‘ervandew/supertab‘
  30.     "Bundle ‘simplyzhao/cscope_maps.vim‘
  31.     Bundle ‘vim-scripts/EasyGrep‘
  32.     Bundle ‘kien/ctrlp.vim‘
  33.     Bundle ‘majutsushi/tagbar‘
  34.     Bundle ‘brookhong/cscope.vim‘
  35.     Bundle ‘scrooloose/nerdtree‘
  36.     Plugin ‘Valloric/YouCompleteMe‘
  37.     "file repos or git repos
  38.     "Bundle ‘git://git.wincent.com/command-t.git‘
  39.     "Bundle ‘https://github.com/Lokaltog/powerline‘

  40.     filetype plugin indent on " required!

  41.     "
  42.     " Brief help
  43.     " :BundleList - list configured bundles
  44.     " :BundleInstall(!) - install(update) bundles
  45.     " :BundleSearch(!) foo - search(or refresh cache first) for foo
  46.     " :BundleClean(!) - confirm(or auto-approve) removal of unused bundles
  47.     "
  48.     " see :h vundle for more details or wiki for FAQ
  49.     " NOTE: comments after Bundle command are not allowed..

  50. """"""""""""""""""""""""END VUNDLE""""""""""""""""""""""""""

三。Tag  Tagbar 插件
    在传统的vim 配置中,浏览文件中的变量,函数都是借助tags 和Taglist 插件。你out 了,vimer 们总有给人想不到的惊喜,Tagbar 横空出世。
TagBar 比Taglist 有更清晰的显示层次结构, 在色彩上也更丰富。对C++ 的支持更友好。git 地址:https://github.com/majutsushi/tagbar。Taglist 可以安然退休了。
在vimr 中映射:nnoremap <F12> :TagbarToggle<CR>


在TagBar 窗口按F1 弹出帮助:

四. 文件查找
    文件查找传统的插件有fuzzyfind lookup等。Sublime的快捷键Ctrl  P 深得程序猿的好评,vim 不能让sublime 独美,推出了CtrlP .传统的查找方式都是切换另外一个shell,find 。现在直接搞定。
ctrlp 的设计思想很先进,能够根据.git 目录自动确定根目录位置,自动确定查找范围,支持路径,文件名。
git 地址:https://github.com/kien/ctrlp.vim
这里有一篇视频讲解:http://zuyunfei.com/2013/08/26/vim-plugin-ctrlp/ 
不过还像又有人有意见了:https://github.com/Yggdroot/LeaderF    号称性能比crtlp 更快。

点击(此处)折叠或打开

  1. """""""""""""""""""""""""""ctrlp"""""""""""""""""""""""""""
  2. let g:ctrlp_working_path_mode = ‘ra‘
  3. let g:ctrlp_by_filename = 0
  4. let g:ctrlp_open_multiple_files = ‘v‘
  5. set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux
  6. set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe " Windows

  7. let g:ctrlp_custom_ignore = {
  8.   \ ‘dir‘: ‘\v[\/]\.(git|hg|svn)$‘,
  9.   \ ‘file‘: ‘\v\.(exe|so|dll)$‘,
  10.   \ ‘link‘: ‘some_bad_symbolic_links‘,
  11.   \ }
  12. """""""""""""""""""""END ctrlp"""""""""""""""""""""""""""""


五. grep  
   vim自带Grep 功能。EasyGrep 基于vim的grep 功能,不受操作系统限制,Windows下的vimer的幸福了。

EasyGrep uses Vim‘s leader key, which is by default ‘\‘.  For information on
this key, type ":help mapleader".
<Leader>vv  - Grep for the word under the cursor, match all occurences, like ‘g*‘.  See ":help gstar".
<Leader>vV  - Grep for the word under the cursor, match whole word, like ‘*‘.  See ":help star".
<Leader>va  - Like vv, but add to existing list.
<Leader>vA  - Like vV, but add to existing list.
<Leader>vr  - Perform a global search on the word under the cursor and prompt for a pattern with which to replace it.
<Leader>vR  - Like vr, but match whole word.

<Leader>vo 打开设置,可以对EasyGrep进行一些设置。

<Leader>vo  - Open an options explorer to select the files to search in and set grep options.
可配置搜索模式:
*EasyGrepMode*  [default=0]
Specifies the mode in which to start.
0 - All files
1 - Open Buffers
2 - Track the current extension
3 - User mode -- Use a custom, on demand set of extensions
最好用的是2,根据文件后缀匹配搜索文件,模式0一直用不出来,不知道是不是Winddows的原因。




6.NerdTree 插件
vim自带窗口浏览插件,不过NerdTree功能更强大,更方便,更好用。
vim 中命令行输入 :NERDTree 显示如下。然后按? 可以显示帮助,是不是很贴心。






郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。