Git时代的VIM不完全使用教程

整理了VIM的配置,换上插件管理的神器-----Vundle,由他引发的VIM生态环境的改善,堪称完美。遂打算写一份简单的教程,分享Git时代VIM新世界的美丽动人之处。对VIM有基础的同学,可直接跳至插件管理部分。

VIM的模式

第一次使用VIM,会觉得无所适从,他并不像记事本,你敲什么键就显示什么,理解VIM的需要明白他的两种模式: - 命令模式 (Command Mode) - 编辑模式 (Insert Mode)

命令模式下,可以做移动、编辑操作;编辑模式则用来输入。键入i,o,s,a等即可进入编辑模式,后面解释原因。

模式的设计是VIM和其他编辑器最不同的地方,优势和劣势也全基于此而生。

基本操作

以下介绍的键盘操作,都是大小写敏感的,并且要在命令模式下完成,需注意:

以字为单位的移动

这四个键在右手最容易碰到几个位置,最为常用。

以词为单位的移动

行移动

助记:0(第0个字符),^$含义同正则表达式

段落移动

跳跃移动

基本编辑

修改

删除

复制粘贴

进阶操作

限于篇幅,在这里我仅介绍下我非常常用的几个操作。

重复操作

因为VIM所有的操作都是原子化的,所以把这些操作程序化就非常简单了:

高效编辑

标记和宏(macro)

VIM的基本操作,可以挖掘的东西非常多,不仅仅需要记忆,更需要自己去探索总结,熟练之后,效率会大幅度提升。后面会给出一些参考链接。

插件管理

Vundle

终于到这篇Blog我最想讨论的部分了。VIM的强大不仅仅体现在操作的高效率,更有强大而充沛的插件做支援,插件丰富了之后,就面临查找和管理的问题。

在遇见Vundle之前,我用Pathogen管理插件。Pathogen还算方便,只需要把相应插件,放在bundle目录下即可,不需要再像以前那样逐个放置单独的文件到相应目录,大大节省了劳动力,管理起来也一目了然,觉得还不错,至少比vimball那种需要执行命令安装的方式好一些。

我真希望我早些遇见Vundle。Vundle受到Pathogen和Vimball的启发,于是有了现在的模样。Vundle的逻辑是这样的:

完美的世界!

Vundle的配置

Vundle的安装很简单:

git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

然后写配置文件.vimrc

  1. `set nocompatible " be iMproved`
  2. `filetype off " required!`
  3. ``
  4. `set rtp+=~/.vim/bundle/vundle/`
  5. `call vundle#rc()`
  6. ``
  7. `" let Vundle manage Vundle`
  8. `" required!`
  9. `Bundle 'gmarik/vundle'`
  10. ``
  11. `" vim-scripts repos`
  12. `Bundle 'vim-plugin-foo'`
  13. `Bundle 'vim-plugin-bar'`
  14. ``
  15. `filetype plugin indent on " required!`

其中Bundle后面的内容,就是插件的名字,插件维护在Vim-Script.org

然后,打开VIM之后,可以输入以下命令:

  1. `"安装插件:`
  2. `:BundleInstall`
  3. ``
  4. `"更新插件:`
  5. `:BundleInstall!`
  6. ``
  7. `"卸载不在列表中的插件:`
  8. `:BundleClean`

现在大部分的插件都已经从Vim.org迁移到了Vim-Script.org,而且很多作者也认领了自己的插件,直接在这个Github的项目下更新,一个比Vim.org更科学更有效的生态环境,就这样完美的形成了。

在此非常严重的感谢vim-scripts.org的创建者Scott Bronson,和Vundle的作者gmarik。他们的创新和分享精神,让这个世界又美好了一些。

也感谢业界良心Github。Vim-Scripts.org整站就是用Github Pages建立维护的,对于个人来说,这是很好的选择,有兴趣的同学可以参看我之前的博客:使用Github Pages建独立博客

插件介绍

有了Vundle,再装插件就是件享受的事情了。我常用的插件有:

  1. `#相较于Command-T等查找文件的插件,ctrlp.vim最大的好处在于没有依赖,干净利落`
  2. `Bundle 'ctrlp.vim'`
  3. ``
  4. `#在输入()""等需要配对的符号时,自动帮你补全剩余半个`
  5. `Bundle 'AutoClose'`
  6. ``
  7. `#神级插件,ZenCoding可以让你以一种神奇而无比爽快的感觉写HTMLCSS`
  8. `Bundle 'ZenCoding.vim'`
  9. ``
  10. `#在()""、甚至HTML标签之间快速跳转;`
  11. `Bundle 'matchit.zip'`
  12. ``
  13. `#显示行末的空格;`
  14. `Bundle 'ShowTrailingWhitespace'`
  15. ``
  16. `#JS代码格式化插件;`
  17. `Bundle '_jsbeautify'`
  18. ``
  19. `#用全新的方式在文档中高效的移动光标,革命性的突破`
  20. `Bundle 'EasyMotion'`
  21. ``
  22. `#自动识别文件编码;`
  23. `Bundle 'FencView.vim'`
  24. ``
  25. `#必不可少,在VIM的编辑窗口树状显示文件目录`
  26. `Bundle 'The-NERD-tree'`
  27. ``
  28. `#NERD出品的快速给代码加注释插件,选中,`ctrl+h`即可注释多种语言代码;`
  29. `Bundle 'The-NERD-Commenter'`
  30. ``
  31. `#解放生产力的神器,简单配置,就可以按照自己的风格快速输入大段代码。`
  32. `Bundle 'UltiSnips'`
  33. ``
  34. `#让代码更加易于纵向排版,以=,符号对齐`
  35. `Bundle 'Tabular'`
  36. ``
  37. `#迄今位置最好的自动VIM自动补全插件了吧`
  38. `#Vundle的这个写法,是直接取该插件在Github上的repo`
  39. `Bundle 'Valloric/YouCompleteMe'`

以上插件可以在vim-script.org找到源码和文档,ZenCodingEasyMotion演示点链接,你会心动的。

.vimrc配置

因为配置不断在更新,所以放上我的配置的链接:.vimrc配置

更多

VIM在一开始会觉得非常不习惯,一定要坚持下去,收获的会更多,不仅仅是在装大侠方面的哦~

关于VIM的使用,这篇博客仅仅介绍了很小的一部分,网络上还有大量朋友总结的心得,常学常有收获: