对于想尝(ru)试(keng)emacs的同学,可以试试spacemacs,一个emacs的发行版,几乎所有常用包都已经有专人帮你配置好了。
--很短的分割线
我推荐几个emacs下用于c/c++的插件:
- irony-mode, 调用clang的补全库进行补全,完美解决了以前emacs自动补全速度慢的问题,比clion和netbeans都快。
- company-mode, emacs下万用的一个补全前端,配合irony-mode使用的。
- flycheck, 静态查错,非常好用,而且速度快,完爆clion。irony-mode有提供一个flycheck的后端。另外还可以使用cppcheck(也是一个静态代码分析,但并不是语法之类的查错,而是bug分析,譬如越界,内存泄露等,甚至分析coding style)作为后端,和irony可以一起用。
- eldoc,文档查看。我个人使用中最重要的功能就是在mini-buffer(以及company-mode)中显示函数的signature。
- neotree,一个文件浏览用的bar,可以替代speedbar(这玩意儿真的垃圾)的文件浏览功能。
- helm-gtags,一个gtags的前端,主要用于跳转函数定义,类定义,查找caller等。利用了helm (这个简直是emacs中一个跨时代的插件,谁用谁知道)。helm-gtags中的几乎所有命令都非常有用。
- projectile, 项目管理工具,非常方便地跳转项目中的文件以及快速跳转项目相关的buffer。功能相当多。尤其是projectile-grep实在是必备利器。
接下来几个非emacs插件,但是很常用的:
- gdb, 调试器。emacs有内置的和gdb的interface,可以直接在emacs中调试,并且提供类似ide的功能(红点显示breakpoints,在源码中标示当前位置)。并且emacs speedbar可以watch expressions,类似ide的watch功能。建议将gdb-many-windows打开,可以自动分屏为6个windows,分别显示gdb,源码,local variable, stack, output等。虽然看起来简陋,但是比起cliion这种一开调试就吃掉一两g内存,走一步卡几秒的渣渣还是好用不少。netbeans就不说了,貌似至今还没有可用的c++调试器。。。
- valgrind,一套代码分析工具,可用于查内存泄露等问题。我主要使用其中的附带的profiler,叫做callgrind。
- kcachegrind,可以将callgrind的输出变得更直观的一个前端。
- 能够使用wiki的人可以看这个,列出了很多静态代码分析工具:https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C.2FC.2B.2B
- gprof2dot,屌炸天的一个将callgrind的输出转成图形的工具。效果图(请点开大图看):
另外几个不是直接用于c/c++,但是我觉得很有用的插件:
- helm,上面提到过,最牛x的emacs插件了。完全改变了emacs用法。尤其推荐新手马上装,配合meta+x可以大大减少你记忆快捷键的痛苦。
- ace-jump-mode,一个用于跳转的插件,神器之一。具体用法参见主页,文字不容易说清。
- 非插件,但是这两个函数实在太有用,第一个是自动缩进整个代码,第二个是自动缩进当前段落。第二个我用得尤其多,绑定到快捷键上,就是一键自动缩进,对于python来说更是利器。。
- (defun indent-whole-buffer () "indent whole buffer" (interactive) (delete-trailing-whitespace) (indent-region (point-min) (point-max) nil) (untabify (point-min) (point-max)))(defun indent-current-paragraph () "indent current paragraph" (interactive) (save-excursion (delete-trailing-whitespace) (mark-paragraph) (indent-region (region-beginning) (region-end) nil)))
复制代码
还有很多有用的插件,譬如自动补齐括号,自动高亮对齐的括号,自动在operator和标点周围插入空格,等等。限于这是关于c/c++的主题,我就不继续介绍了。emacs用久了大家都会慢慢知道这些的。
BTW,对于python用户,强烈推荐elpy。当装上这个插件后,我默默删了pycharm。
|