
vim_cheat_sheet_for_programmers.png
常言道:工欲善其事,必先利其器 ,作为一个程序员,一个常用的工具就是编辑器,我选择一个能极大提高自己开发效率的编辑器vim(有些人可能选择emacs)。而vim编辑器方面具有以下几种特性:
如果你需要配置vim,只需在Home目录创建一个~/.vimrc文件即可以配置vim了,可以参考我的vimrc配置文件。由于我需要安装插件,并且将需要安装的插件列表分离到另外一个文件~/.vimrc.bundles,这个文件也是存放在Home目录,文件内容可以参考vimrc.bundles。若想加载~/.vimrc.bundles文件,必须在~/.vimrc文件加入以下代码片段:
if filereadable(expand("~/.vimrc.bundles"))
source ~/.vimrc.bundles
endif
vundle是vim的插件管理工具,它能够搜索、安装、更新和移除vim插件,再也不需要手动管理vim插件。
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
但实际上我是添加一个~/.vimrc.bundles文件来保存所有插件的配置,必须在~/.vimrc文件加入以下代码片段:
if filereadable(expand("~/.vimrc.bundles"))
source ~/.vimrc.bundles
endif
而~/.vimrc.bundles文件内容必须包含:
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
你可以复制到我~/.vimrc.bundles文件到Home目录。
bundle分为三类,比较常用就是第二种:

Bundle Type.png
将安装的插件在~/.vimrc配置,但是我是将插件配置信息放在~/.vimrc.bundles:
" Define bundles via Github repos
Bundle 'christoomey/vim-run-interactive'
Bundle 'Valloric/YouCompleteMe'
Bundle 'croaky/vim-colors-github'
Bundle 'danro/rename.vim'
Bundle 'majutsushi/tagbar'
Bundle 'kchmck/vim-coffee-script'
Bundle 'kien/ctrlp.vim'
Bundle 'pbrisbin/vim-mkdir'
Bundle 'scrooloose/syntastic'
Bundle 'slim-template/vim-slim'
Bundle 'thoughtbot/vim-rspec'
Bundle 'tpope/vim-bundler'
Bundle 'tpope/vim-endwise'
Bundle 'tpope/vim-fugitive'
Bundle 'tpope/vim-rails'
Bundle 'tpope/vim-surround'
Bundle 'vim-ruby/vim-ruby'
Bundle 'vim-scripts/ctags.vim'
Bundle 'vim-scripts/matchit.zip'
Bundle 'vim-scripts/tComment'
Bundle "mattn/emmet-vim"
Bundle "scrooloose/nerdtree"
Bundle "Lokaltog/vim-powerline"
Bundle "godlygeek/tabular"
Bundle "msanders/snipmate.vim"
Bundle "jelera/vim-javascript-syntax"
Bundle "altercation/vim-colors-solarized"
Bundle "othree/html5.vim"
Bundle "xsbeats/vim-blade"
Bundle "Raimondi/delimitMate"
Bundle "groenewege/vim-less"
Bundle "evanmiller/nginx-vim-syntax"
Bundle "Lokaltog/vim-easymotion"
Bundle "tomasr/molokai"
Bundle "klen/python-mode"
打开vim,运行:BundleInstall或在shell中直接运行vim +BundleInstall +qall

Install Bundle.png
安装完插件之后,可能还有一个问题:就是vim版本不够高

Vim版本不够高.png
可以使用以下命令更新vim版本
brew install macvim --override-system-vim
然后运行以下命令符号连接到/Application
brew linkapps macvim
最后在.zshrc配置文件中使用别名来使用更新后的vim
#setup macvim alias
alias vim='/usr/local/opt/macvim/MacVim.app/Contents/MacOS/Vim'
NERD Tree是一个树形目录插件,方便浏览当前目录有哪些目录和文件。

NERD Tree Plugin Bundle.png
我在~/.vimrc文件中配置NERD Tree,设置一个启用或禁用NERD Tree的键映射
nmap <F5> :NERDTreeToggle<cr>

NERD Tree Configuration.png
所以你只需按F5键就能启用或禁用NERD Tree,NERD Tree提供一些常用快捷键来操作目录:
YouCompleteMe是一个快速、支持模糊匹配的vim代码补全引擎。由于它是基于Clang引擎为C/C++/Objective-C提供代码提示,也支持其他语言代码提示的引擎,例如基于Jedi的Python代码补全,基于OmniSharp的C#代码补全,基于Gocode的Go代码补全。

YouCompleteMe.gif
只需敲入代码,就自动提示想输入的代码列表,你可以选择其中一个,然后tab键就可以补全代码。
YouCompleteMe已经集成了Syntastic,所以一旦你编写代码时语法错误,就会有红色错误提示

syntastic.png
不知道你有没有遇到这样一种情况:在大规模的工程项目中,目录和文件嵌套比较深,打开一个文件要逐个逐个进入目录才能打开,这样的话,比较耗时间和效率很低,ctrlp重新定义打目录和文件方式,特别适用于大规模项目文件的浏览。
启用ctrlp
基本使用
演示视频
具体如何使用ctrlp,请参考happypetterd的演示视频: haoduoshipin 商业网/episodes/64,讲解非常清楚。
Vim Powerline是一个显示vim状态栏插件,它能够显示vim模式、操作环境、编码格式、行数/列数等信息

Vim Powerline.png
Molokai是vim颜色主题,效果如下

Molokai Color Scheme for Vim.png
对于入门vim基本命令可以参考 简明 Vim 练级攻略,以下是本人关于移动光标、插入/修改、删除、复制、粘帖、撤销和恢复等常用命令
r更改当前的字符
R更改多个字符
cw/caw更改单词
cf + 字符更改从当前字符到指定字符
c$更改从当前字符到行尾
cc更改整行

