杂
从大二接触 Linux (Ubuntu 7.10) 开始,也不知道自己有多少时间折腾进去了。首先是系统安装,包括 vm、vbox 中的安装,次数已经记不过来。有测试新版本的,有学习用的,也有体验新的安装方法的,更多无聊的时间是花在了显卡和字体的配置上了。然后是系统管理和服务器配置,bind (dns serer),dhcp,http,ftp,ssh,iptables 等。接着是 shell,vim 等,尤其是后者,不知道磨了多少时间。可能这些东西现在也没怎么用到,大部分时间在 XP 下呆着,不过当时尝试这些也不是为了学习,更多的是出于对技术的好奇和对开源的热情吧。使用 vim 可谓一波三折:
好奇》畏惧》决心》沮丧》平静》自信》再沮丧》再平静(KISS)》释然》感恩
这个过程同样也发生在我对学习、生活中一些事物的看法上。 努力追求最优的选择,蓦然回首,已经偏离目的地; 不断尝试以达到完美,疲惫思量,简单也是一种美。
exVim
这些天又再遇一年前尝试的 exVim,vim 编辑器的一个配置方案。当时使用 vim 的时间并不多,又急切地想体验下传说中 vim 的强大功能,所以选择直接使用别人的配置。之后的“沮丧”经历再次证明,急功近利的拿来主义是不可取的,特别是在当基础知识都没有掌握好时。在经历 N 次“无助”后,我放弃了所有之前的配置,从零开始!自己动手写配置,参考别人的配置,查 doc,不清楚的配置就不加。后来的配置是在使用需求中不断完美的,并尝试着尽可能使用 vim,于是 vim 取代了 editplus,成了我的主要文本编辑器。 然而,写代码我还是用 VC,目前还是觉得 VC 下的代码查看和调试比较方便,代码编辑 vim 的感觉倒是更好些,DIY 也容易些。正因为后者,我一直想着用 vim 来写代码,主要问题在于:tags 管理和代码的快速跳跃。后来尝试了一些 plug-ins,也基本解决了这些问题,但因精力和能力有限,也没有太在意,够用就行! 这些天重新测试了 exVim,因为带的插件基本用过,比较熟悉,很快就把自己的配置整合进来了。exVim 的特色:
- use one single file your_project.vimentry to access your project.
- update tags, IDs and other things you used in your project in one command.
- browse project files in project window.
- search files, tags, and words in source code by the builtin method.
- a powful way to filter search result.
- trace your code by jump stack.
- reading code easily by word highlight and macro highlight.
- view classes hierarchy pictures.
- compile project in vc/gcc and get error results from them directly through vim.
- enhanced quick-fix window.
- communicate with visual studio — get build errors, open files, add break point and send command make vs.net compiling current file.
其中大部分功能和插件是已有的,作者只是改进并集成在一起。很多好配置是按着作者的使用习惯的,可能你会觉得不顺手,不过资深 vimer 的习惯还是值得学习的 :P,特别是 mappings 的设计很赞、很顺手!也有一些可能令被 VC(with VA)惯坏的人不大习惯的配置,如 OmniComplete 的配置默认不开 dot, scope, - 的补全,作者解释他写的工程一般比较大,又有 template,补全不好用。《可爱的Python》中也介绍过不建议过于依赖自动补全功能,有些程序员都不看 doc 了,把补全的菜单项当 doc 了。这是一个很不好的习惯,因为一些时候光从命名是看不出函数或类的重要信息,如注意事项等。
经验分享
最后就简单分享下我的 exVim 熟悉过程。首先,尽可能查阅下官方的 help doc,写得比较详细、直白,力推!其次,如果遇到问题或者要添加新的功能,就按一般 vim 的方式配置,exVim 只是 vim 的一个配置方案,不是一个新软件。虽然 exVim 自带的插件已经比较全了,我还是再推荐两个,大家应该有听过,一个是 SuperTab ,另一个是 FSwitch 。前者提供更易用的补全操作,后者是 Alternate (exVim 包含)的加强版。 最后,再提醒下,如果要使用与 VC 结合的功能,需要安装 python 及相关模块,同时 gvim 也需要编译支持对应版本的python,最新的编译好的版本可以在 附 中的 找到 。如果使用时 python 提示 UnicodeEncodingError,是因为默认配置的vim encoding 为 cp936,而 python 的 sys.getdefaultencoding() 为 ‘ascii’,如果 str 中包含不能用 ‘ascii’ 表示的字符,如中文,就会提示这个错误了。解决方法为修改: . vimrc
set tenc=utf-8
vimfiles/plugin/visual_studio.py 在 import 代码段后添加
sys.setdefaultencoding('utf-8')
其它一些设置
let MRU_Max_Entries = 20
加一张查看 Ogre 源代码的快照 :D,正在查看哪些地方调用 Ogre::Root::initialise()
参考
- http://code.google.com/p/exvim/
- http://www.ex-dev.com/tools/exvim/documentation/
- http://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/