Emacs配置C/C++-mode的代码智能提示和自动补全
浏览:9236次 出处信息
以前在windows下工作,只是在需要敲一些短小的测试代码才用到Emacs,所以c++-mode的代码智能提示和补全一直就没有费心去配置,今天花了点时间,参照网友们的教程,终于把自动补全的功能加上了。
主要安装了这几个插件:
(1)company-mode:代码补全的核心插件,能够配合许许多多的处理后端来实现比较方便并且清晰的代码补全,比如下面的semantic
(2)semantic:这个插件是cedet的一个子集,主要提供词法分析功能,在后台生成tag,和company搭配,不仅能对当前文件扫描,还能对include指定的文件进行扫描,从而提供尽可能完美的智能提示。
cedet下载地址:http://cedet.sourceforge.net/
(3)yasnippet:是 Emacs 的一个缩略词模板替换系统,可以把一个预先设定好的缩略词扩展成模板,比如,在c++-mode下,当你输入class然后按下回车键,它会自动为你生成一个类的完整声明所需的全部代码,此外,它几乎支持emacs中所有的mode,如java、perl、python等等,这就是为什么在只使用company-mode和semantic便可以完成代码自动补全的情况下,我还会选择安装它的缘故,的确是十分方便。
下面是配置过程:
首先把下载的cedet文件夹全部放到你的插件加载目录中,当然,还有company-mode文件夹,.emacs中加入代码:
(add-to-list 'load-path "/usr/local/emacs23/my_plus/company-mode"
"/usr/local/emacs23/my_plus/cedet/common") ;拓展文件(插件)目录
(load "/usr/local/emacs23/my_plus/cedet/common/cedet" nil t)
(autoload 'company-mode "company" nil t)
(setq company-idle-delay t)
"/usr/local/emacs23/my_plus/cedet/common") ;拓展文件(插件)目录
(load "/usr/local/emacs23/my_plus/cedet/common/cedet" nil t)
(autoload 'company-mode "company" nil t)
(setq company-idle-delay t)
下面是semantic的一些配置参数:
(setq semanticdb-default-save-directory "~/.emacs.d/semanticdb")
(semantic-load-enable-code-helpers)
(semantic-load-enable-code-helpers)
(semantic-load-enable-code-helpers)
(global-set-key [(control tab)] 'semantic-ia-complete-symbol-menu) ;semantic的自动补全快捷键
(setq semanticdb-project-roots
(list (expand-file-name "/")));semantic检索范围
;;设置semantic cache临时文件的路径,避免到处都是临时文件
(setq semanticdb-default-save-directory "~/.emacs.d/")
然后设置yasnippet,把下载的yasnippet-bundle.el放到插件目录下,.emacs中添加代码:
(require 'yasnippet-bundle)
ok,现在启动emacs,新建一个test.cpp文件,就可以开始体验Emacs中强大的智能提示功能了,我这里截图不太方便,所以暂时就不上图了,大概效果网上都有。
说说大概用法,这时候菜单多了一项YASnippet,打开就可以看到不同的模式子菜单,下面有对应的功能和缩略字符串,敲出对应的缩略词,如class,然后按下tab键,然后代码模板就出来了。
其实semantic也可以智能提示的,前面已经设置过快捷键了,C + table,也比较好用,不过就是每次都需要自己手动敲一下,比较麻烦
要使用company-mode的自动补全,需要先输入一个emacs命令,M x company-mode,然后再试试,现在的效果和vs很像了。
最后,再配置一下c++-mode的一键编译吧,需要先安装g++,linux下只需要在.emacs中加入下面的代码:
;;一键快速编译 C++-mode
(defun quick-compile ()
"A quick compile funciton for C++"
(interactive)
(compile (concat "g++ -g -pg " (buffer-name (current-buffer))))
)
(global-set-key [(f9)] 'quick-compile) ;;快捷键F9
(defun quick-compile ()
"A quick compile funciton for C++"
(interactive)
(compile (concat "g++ -g -pg " (buffer-name (current-buffer))))
)
(global-set-key [(f9)] 'quick-compile) ;;快捷键F9
按下F9就可以直接对当前文件执行编译命令,从命令参数-g可以看到这里生成的是调试版,方便使用gdb进行调试,在Emacs中使用gdb只需要敲入命令:M-x gdb即可,后面的使用和shell下一样,就不详述了。
建议继续学习:
- Vim下的代码自动补全和代码跳转阅读 (阅读:14414)
- 为什么要用 Emacs/Vim,而不是任何其他编辑器 (阅读:12194)
- Emacs安装配置 (阅读:7359)
- emacs改变人生 (阅读:5120)
- 通过vim字典补全,实现php函数名自动补全 (阅读:4432)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:用工具跟踪用户的行为
后一篇:NPR简介 >>
文章信息
- 作者:ian 来源: Vimer
- 标签: Emacs 补全
- 发布时间:2010-05-25 13:28:04
近3天十大热文
- [70] Twitter/微博客的学习摘要
- [67] IOS安全–浅谈关于IOS加固的几种方法
- [64] 如何拿下简短的域名
- [63] find命令的一点注意事项
- [63] android 开发入门
- [62] Go Reflect 性能
- [61] 流程管理与用户研究
- [59] Oracle MTS模式下 进程地址与会话信
- [58] 图书馆的世界纪录
- [57] 读书笔记-壹百度:百度十年千倍的29条法则