zoukankan      html  css  js  c++  java
  • 打造属于自己的 Vim 神器

    原文链接:http://zilongshanren.com/blog/2013/01/15/vim-the-killer/

    Why Vim?

    为什么要使用Vim?

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

    Vim or Emacs就好比倚天和屠龙,得一可得天下。 – By vimer.cn

    Vim就像学钢琴一样,一旦学会,终身受益无穷。 –By Practical 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 a 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篇,大家可以参考一下。(不过都是英文哦)

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

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

    Basic plugins

    Pathogen:该插件用来管理Vim的插件,可以让插件的安装与卸载更加方便。配合Github和Submodule效果更佳。

    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,且是轻量级的.

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

    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 pluginsDerek Wyatt’s Blog

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

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

    References

    Google + Wiki. :)

     Jan 15th, 2013  vim


  • 相关阅读:
    Python Day 72 Django框架 图书管理系统回顾ORM 正向查询、反向查询、跨表查询、Django终端打印SQL语句、ORM十三个必会操作总结
    Python Day 71 Django框架setting源码分析、基于该源码原理实现用户在暴露的setting文件中自定义的配置就使用用户配置的,没配置就是用全局默认的
    Python Day 70 利用Django框架做的一个bbs小项目
    Python Day 69 Django框架、Forms组件、forms组件的钩子函数、form组件前端处理逻辑三种方式、form常用字段及插件、Form所有内置字段、字段校验两种方式
    Python Day 68 Django框架、CBV源码简单理解
    Python Day 67 Dango框架图解(总结)、Wsgiref和uwsgi、前后端传输数据的编码格式、From表单和Ajax方式在前端往后端发送文件、补充一下页面清缓存
    python 学习分享-实战篇简单的ftp
    python 学习分享-面向对象2
    python 学习分享-实战篇选课系统
    python 学习分享-面向对象
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212055.html
Copyright © 2011-2022 走看看