• Why Vim?
  • Why not Vim?
  • How to make Vim as an IDE?
  • Recommended plugins
    • Basic plugins
    • Bonus Plugins
  • Troubleshootings
  • Further Reading
  • References

Why Vim?

为什么要使用Vim?

让我们先看看其他人怎么说:

Vim or Emacs就好比倚天和屠龙,得一可得天下。 Vim就像学钢琴一样,一旦学会,终身受益无穷。

这些话都是出自vim高手之口,对于Vim新手,可能暂时没办法体会。而我使用Vim也有一段时间了,肯定不能算是高手,但至少也是一个熟手。

我现在主要使用Vim来编写c/c++、js、lua代码,我觉得非常方便,比Xcode和Eclise都强(调试部分可能相对弱一点)。当然,我还使用Vim来修改其它文档,比如Html、XML、文本文件等。现在我正在使用Vim书写本篇博文,非常酷,非常爽!

我转成Vim党的感受,一句话:

Vim streamline my daily workflow and boost my coding productivity.

现在,我客观地说明一下Vim的一些好处:

  • 跨平台、支持N(N>40)种编程语言

  • 可安装各种插件,也可以编写自定义的插件,编辑器功能可无限扩展。

  • 配合Git管理Vim配置和插件,可极大地提高编辑器的适配性

  • 小巧、安装方便、开源、免费

  • 可打造出属于自已的个性化IDE工作环境,提高生产率

Why not Vim?

为什么不使用Vim?

可能有以下几种声音:

  • Vim过时了,用Vim就是找虐,别装比了,专心学好数据结构与算法吧。

  • 我是Java党,我只用Eclipse,也能安装各种插件。我是.Net党,我喜欢强大的VS,也有牛比的插件(如VC助手)

  • 我是果粉,我喜欢Xcode的优雅,也是免费的,有苹果罩着,LLVM代码补全用着超爽。

  • 我也知道用Vim或者Emacs很强大,但是学习曲线真的很陡,我还是老老实实用我的IDE吧。

  • 我在用TextMate、Notepad++、Sumbline text 2,我用着很爽,这些也是神器,我不需要Vim。

我在这里不去说现代的IDE有什么不好,或者Vim相比于这些IDE来说有哪些优点。我知道这样说,又马上会引起一场语言之争,编辑器大战出来。其实,真的是没必要去纠结用什么开发工具,也没必要纠结用什么语言。

只是我觉得程序员天生就是用来折腾的。有牛人讲过一句话:

每年学习一门新的编程语言,而且这门语言跟你之前熟悉的语言关系越远越好

现在,我也呼吁一下吧:从现在起,学习一门新的文本编辑工具Vim,它跟你之前所用到的编辑器体验完全不一样。它的Modal Editing是独一无二的,程序员值得拥有。而且你不用每年换一个编辑器,因为你只需要一个Vim编辑器。你越了解它,越使用它,就越会对它爱不释手。

让我们一起来折腾吧!Vim, the Killer! Oh~Ye.:)

How to make Vim as an IDE?

Know the saw, then sharpen it.

很多人不使用Vim的原因很简单,除了不习惯它的Modal Editing之外,更多的是觉得它算不上一个IDE。但是,稍微对Vim有过了解的朋友都知道,Vim是可以被打造成一个IDE的,而且是专门属于自己的IDE。

为什么要使用IDE,请看此贴

博客园的池建强写了一系列的博文《谁说Vim不是IDE》(一、二、三、四。)有兴趣的朋友可以去看看,看完后你会发现,原来Vim也可以变成IDE。:)

关于如何把Vim打造成一个IDE,只要你现在随便谷歌一下,你肯定能找到一大堆贴子。但是,由于Vim历史悠久,有许多贴之已经过时了。

其中最主要的变化有:

  • 有些插件有新的替代插件了(因为站在巨人肩膀上的缘故)

  • 安装和管理插件的方式变了,以前是手动复制相应目录和文件,现在改为插件管理器+Github了。

  • 有些插件已经不推荐使用了

但是,Vim社区总是很活跃的。目前,已经有牛人把最新的Vim配置方式分享出来了。我找到了3篇,大家可以参考一下。(不过都是英文哦)

  • Vim, The Killer

  • Vim as your IDE

  • Vim as a python IDE

其实可以列举的还有很多,国内也有许多优秀的Vimer,欢迎你们推荐优秀的设置Vim为IDE的教程或者文章,Thanks.:)

Recommended plugins

没有安装插件的Vim算不了什么,但是,一旦安装好插件,Vim立马就牛比了。这里,作为一名cocos2d-x游戏程序员,我给大家推荐一些插件,关于插件的用法,大家可以查看help文档,我这里就不赘述了。

Basic plugins

Pathogen:该插件用来管理Vim的插件,可以让插件的安装与卸载更加方便。配合Github和Submodule效果更佳。(2014-6-19号更新:现在我用Vundle了,更方便。)

NerdTree:该插件会生成工程目录树

TagBar:该插件生成函数、变量列表。之前有一个插件叫TagList,我觉得那个有点不好用,推荐TagBar

UltiSnips:类似TextMate的snippets,之前有个插件叫SnipMate,这个基于SnipMate,比SnipMate要强很多。强烈推荐。

vim-commentary:注释代码的插件。

syntastic:保存文件时检查语法的插件。

fugitive:方便在Vim里面使用Git的插件。

vim-colors-solarized:Vim颜色配色方案。

ctrlp:搜索目录下的文件,类似功能的插件有Comment-T,我喜欢ctrlp,因为它不依赖于ruby,且是轻量级的.

delimitMate:成对生成(),{},[]

vim-surround:给文本添加“外套”,呵呵,试试就知道有多强大了。

supertab:让tab键可以飞起来。

a:让cpp文件在.h和.cpp文件中切换。

buferexplorer:方便浏览buffer的插件。

clangComplete:自动代码补全的插件,比OmniCppComplete好N多,速度有一点影响。不过配合neocomplcache,加上这个版本,效率还不错。

neocomplcache:关键字补全、文件路径补全、tag补全等等,各种,非常好用,速度超快。

neocomplcache-clang:解决clang_complete和neocomplcache的冲突。

TagHightlight :根据生成的Tag文件,高亮类、变量、函数和关键字。

Bonus Plugins

bufkill:让nerdTree在最后一个buffer窗口关闭时,不让其缩放。

vimprj:方便管理工程相关的vim配置。参考如何设置Vim为IDE中的第一篇E文。

vim-unimpaired:一些不错的配置,可以让[]发挥奇效。

vim-powerline:超有爱的状态栏。

vim-textobj-line:文本对象插件,可以操纵当前行。

更多插件,可以到我的Github上面去查看。可以从本博右上角Fork Me on Github处进入。当然,如果各种Vimer有什么好的插件,也欢迎推荐给我。

Troubleshootings

这部分主要记录我在打造神器的过程中遇到的一些问题:

  • Vim版本最好用gvim或者macvim,然后从源码编译最好。最好是支持python,ruby,cscope等,大部分vim发行版本都是支持这些特性的。

  • 使用Excubert-ctags和DoctorJs来生成tag文件,配合cscope效果好。如果是mac用户,自带的ctags不管用,需要用homebrew或者macport来安装

  • 配置pyclewn时,安装需要指定Editor和home设置。运行的时候,如果要让GDB支持tty,还需要重新安装GDB,最好是homebrew或者macport来安装。安装好之后,要给gdb添加codesigning。

  • windows版本下有些配置可能不太一样,特别是vimrc文件的配置,跟*nix系统不太一样。可以考虑用has(win32)之类的代码来区分vimrc配置。这样可以让vim运行在多个平台上。

Further Reading

强烈推荐阅读:《Practical Vim》

推荐视频网站三个:Vimcasts.org,essential vim plugins和Derek Wyatt’s Blog

国内站点推荐三个:vimer世界,易水的博客,水木清华社区

最后推荐一个vimrc设置技巧网站vimbits,这个网站会选出最流行的vimrc配置,大家可以时不时去上面淘金。当然,如果你发现好用的vimrc配置,也记得一定要分享出来啊。社区需要你!

References

Google + Wiki. :)

【转自:https://zilongshanren.com/blog/2014-06-19-make-your-vim-weapon.html】

打造属于自己的Vim神器相关推荐

  1. vim复制粘贴_打造一款高逼格的Vim神器

    Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个开发者不得不安装的一些插件,而关于 Vim 的简介,主题的选择,以及为何使用 vim- ...

  2. 打造一款高逼格的Vim神器

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中 ...

  3. 肝!打造一款高逼格的Vim神器

    作者:枫上雾棋 链接:https://segmentfault.com/a/1190000011466454 Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注 ...

  4. Aria2打造属于自己的下载神器

    请关注微信公众号( ?sharingplus) 我使用Aria2差不多已经2年了.在这段时间使用很多下载工具,最开始使用的是迅雷极速版 .后面各种原因不好使了.Free Download Manage ...

  5. 如何快速的打造python 版的vim ide

    本来是不想写的,后来想想还是造福一下需要的人吧,因为确实很佩服一键化的作者.我知道很多人都可以自己配置vim插件,只是估计会鼓弄很久吧,在git上有一个人已经集成他认为好的所有插件(其实git上这玩意 ...

  6. 学以致用十四-----打造一个简单的vim IDE

    一.安装dircolors git clone https://github.com/seebi/dircolors-solarized.git cd dircolors-solarized/ mv ...

  7. iTerm2 + Oh My Zsh,打造专属你的终端神器

    前言 说在前面,本文主要适合于的是使用 macOS 系统的小伙伴,如果你使用的 Windows 或者 Linux 系统的电脑,那可能暂时不太适合你.当然了,如果你只是想了解一下新知识,那么欢迎各位! ...

  8. 用C/C++打造电脑微信多开神器,值得体验一把!

    微信多开能实现微信多开甚至N开,为了保证微信功能可以正常使用,会申请很多权限.但请放心使用,不用担心存在任何隐私泄露问题.使用过程中请勿手动或使用工具自动清理平行空间的进程,否则会导致微信无法及时收到 ...

  9. 爸爸的奶奶叫什么?Python打造爆款走亲戚神器—走上人生巅峰。

    "父亲的父亲叫什么?" "叫爷爷" "母亲的母亲叫什么?" "叫外祖母(姥姥)" --那妈妈的妈妈的爸爸的爷爷的弟弟的儿 ...

最新文章

  1. 用openssl跟Gmail的smtp对话(一)
  2. 【算法基础】漫画:什么是 “跳表” ?
  3. Android studio 如何查看模拟器里面的文件
  4. LeetCode 264. 丑数 II
  5. 街头抓拍之一:酷似福克纳的老头
  6. 组装电脑教程(转载)
  7. 关于在虚拟机上进行wp7的开发
  8. TCP/UDP的接收缓冲区和发送缓冲区
  9. 设计模式-职责链模式 (分离职责,动态组合)
  10. 冲突等价(ConflictEquivalence) 可串行化调度(Serializable Schedules)
  11. 基于系统的软件测试报告,软件系统测试报告模板.doc
  12. c语言实验报告全,c语言实验报告
  13. USGS批量下载Landsat遥感影像数据时无法下载Surface Reflectance的解决
  14. Sql中 update select结合更新
  15. 【C语言】打印二叉树树形(制表符实现,清晰+高拓展)(2022-10-22 更新—偏移量说明)
  16. 记录ESP32 出现未定义vTaskGetRunTimeStats的奔溃时刻!
  17. iframe的onload事件
  18. java在线运行工具,终于搞明白了
  19. .Net微服务架构:API网关
  20. 揭开 LVS 神秘的面纱

热门文章

  1. Shell命令-文件及内容处理之grep(egrep)、join
  2. Shiro源码分析之Subject和SecurityManager
  3. 走近伏羲,谈5000节点集群调度与性能优化
  4. 中小企业集群ntpd服务搭建
  5. Android Native C Log
  6. SQL Server Audit(审核)配置方法--数据库级别的审核
  7. 易到遭******以数据要挟索要巨额比特币
  8. 重新安装python2.6 和 yum (不可以直接安装yum yum 依赖于python2.6)
  9. Vert.x MySQLClient体验
  10. scala(10)-----Scala 闭包