Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2111|回复: 0
打印 上一主题 下一主题

将Emacs配置成一个C/C++的IDE编程环境

[复制链接]

165

主题

269

帖子

957

积分

认证用户组

Rank: 5Rank: 5

积分
957
跳转到指定楼层
楼主
发表于 2017-9-12 19:35:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://www.oschina.net/question/54100_56621
1.写在前面
         Linux下的编程,业界多数人士并不喜欢,尤其是习惯了在windows下编程的程序员,认为windows的IDE各种好,而linux下没有一个好 的IDE ,估计很多人就是卡在这个门槛上了(PS:听说Microsoft和google这种级别的公司的顶级程序员也都不用IDE的,用的是VIM和 EMACS)。虽说那些linux牛人也都不用IDE的并且我也很想装成一个牛人,但经过几番折腾,本人还是比较习惯IDE,因为本人也是在 windows的IDE下开始的程序生涯。“工欲善其事,必先利其器”,我想如果有个好用的IDE,那些linux牛人应该也不排斥吧。
         在linux编程,首先要选择开发工具,自然目光就投向了网上都说的两大神器——VIM和EMACS,虽说他们只是编辑器,但由于超强的可定制度,已成为 广大linux工作者的首选。所以今天我就写点本人使用Emacs和将Emacs配置成一个简易IDE的过程和心得。不过说起配置IDE,CSDN上前辈 吴垠有篇将VIM配置成IDE的文章,本人刚在linux编程时曾深深学习过,甚为折服。顺便提一句,我曾经也是用VIM写程序的,所以我的VIM看起来 也是一个简单的IDE,不过后面转向使用Emacs了(声明:本人无意加入VIM和Emacs之争,选择哪一个纯属个人习惯和喜好而已)。
         网上很对人都说Emacs门槛比较高,入门难。其实也没有说的那么夸张,可能是比VIM难一点,但是也是很容易上手的,只是好用不好用的问题。好了,闲话少说,下面进入今天的主题:打造Emacs。
         本文对Emacs的说明有:
  • Emacs的基本操作和组合键
  • 启动时的边框和大小及在屏幕中的位置
  • Emacs的基本常规设定
  • Emacs的一些开发环境的设定(C/C++、script等等)
  • Emacs的一些扩展配置(如改变光标的形状等)
   附:本文不会解释lisp编程。

   我的工作环境是ubuntu11.04,emacs是直接用sudo apt-get install emacs安装的,版本是GNU Emacs 23.3.1。下面的例子基本都是在C语言做的演示。
下面对一些文中可能用到的名称说明一下:
    文中的路径都是 ~/ 目录,文中的一些路径如,~/_emacs,~/work,之类的如果没有就自己建一个,.emacs文件在~/.emacs。
先来两张图,我的emacs界面,o(∩_∩)o
图一:
对照上图的编号:
1:简洁明了的buffer浏览和操作,以及一些文件浏览器,tag浏览
2:高亮代码编辑区
3:自动补全
4:更好的文件浏览器
图2:(debug的截图)
对照上图:
1:图形化调试选项
2:变量查看区
3:源码查看区
4:栈查看区
5:断点查看区
2.Emacs的基本操作和组合键1.Emacs的模式键定义
四个模式键:C------àctrl;M------àalt;s------àsuper(win);S----àshift
比如:C-x:表示ctrl+x(表示先按下ctrl键,然后按下x键
C-x c C-c:表示按下ctrl,然后按下x键松开后再按下c键
C-x k:表示按下ctrl,同时按下x和k键
2.Emacs的基本组合键
C-x C-c:退出Emacs
C-x C-s:保存当前buffer
C-x C-f:打开和新建文件
C-n:光标移到下一行
C-p:光标移到上一行
C-k:删除一行
M-x:执行命令
其他的很多组合键我都进行了重新绑定,在下文中将有描述。
3.启动时的大小和屏幕的中的位置
如图语句表示在启动后在屏幕的x=20,y=0处,高度为35宽度为100的Emacs。
说明:关于修改Emacs的启动大小的问题,网上最多的描述是:有两种方法①修该~/.Xdefault文件,然后运行xrdb ~/.Xdefault;②在~/.emacs中进行上图所示修改;然后网上的说明是第一种方法更好。故在此进行一个说明,根据笔者的使用经验,个人更喜 欢用第2种方法,因为当用第一种方法后,每次修改了emacs的配置文件,都需要重新运行xrdb  ~/.Xdefault,个人感觉比较烦,还有一些其他问题,这里就不例举了,所以我选择的是在.emacs配置文件中修改的方法。
4.Emacs的基本常规设定
按照一般的习惯,.emacs文件中一般不会放太多的设置信息,一般放一些emacs的搜索路径的信息。这里我的emacs的配置文件,即lisp脚本都放在~/_emacs的文件夹中。
因此首先添加一个emacs的搜索路径:
然后加载我们对emacs的设置脚本,在.emacs中添加如下语句:
图中的几个脚本文件将在下面分别解释器用途。
①对emacs的基本设置,即base.el文件(在~/_emacs中),base.el文件中的部分内容如下:
设置默认工作目录,即启动emacs后所在的目录,我这里设的是主目录下的work文件夹,我几乎所有的代码都是在该目录下完成的,在base.el中加上下面一句:
上面就是一些基本和重要的配置,我没有多加说明,因为图中几乎每行语句都有注释,所以大家应该能看懂的。O(∩_∩)o
5.C/C++的配置
下面讲关于C/C++的配置,因为笔者在Linux下主要还是进行C/C++的开发。我的C/C++的配置主要是cycode.el文件中。
①开发时很重要的一步就是调试,因此,好的调试环境很重要,所以首先就是图形化调试界面:
上面加载了两个lisp的脚本文件,这两个文件是直接在网上下的图形化调试的文件。
②为了能高效的浏览和编辑代码,需要安装cedet插件(可以到官网下载),下载cedet后,在~/install目录中解压,然后看解压出来的 文件夹中的INSTALL文件,然后根据里面的描述安装cedet即可(注:我所有的需要安装的插件都在~/install目录中,下面将不再重复说 明),有一点需要注意就是安装完成后不能删除安装后的文件,也就是需要保留解压后的文件夹。
安装完成后,即用下面的语句将我们需要的一些东西包含进来:
然后现在就可进行有关cedet的设置,这里只是用一个代码折叠和展开为例:
③为了使使用更方便,即对上面cedet插件的一个补充,需要在安装一个ecb插件。下载ecb后放到intall目录中,解压即可(仅仅是解压),然后加上下面两句:
④自动补全功能,为了实现自动补全功能,需要安装两个插件,这两个插件是相辅相成的——auto-complete和yasnippet。先安装 auto-complete,下载后放到install目录中解压,然后进入解压后的目录,然后输入make命令即可;下面安装yasnippet,下载 后放到install目录,然后解压即可;下面是几句关于这两个插件的配置:
⑤装完插件后,下面是一些关于综合的配置:
下面是两种补全命令:
6.键绑定
到这里,已经基本完成了C/C++开发环境的搭建,为了使自己用emacs更方便,需要一些建绑定,即自己定义一些组合键,这是emacs配置中必不可少的一步,我的自定义组合键都放在cykbd.el文件中,下面是部分我的键绑定代码:
根据一般的习用f1来表示帮助,即man命令:
这部分是对f1-f12的一些绑定:
这里的f6为调试,即用gdb调试,f7是调用make来对原文件进行编译。
将f8为对buffer的一些常用操作:
用f12查看函数定义:
对ecb的键绑定:
对窗口的一些键绑定:
7.Emacs的扩展配置
上面已经完成配置emacs的基本工作,换句话说,到目前为止我们已经可以用emacs进行开发了,但是为了进一步的是emacs更符合我的习惯,又加了一个cyexpand.el这个配置文件,是emacs的功能更强大,cyexpand.el的部分设置为:
Emacs主题的设置:
将光标改成一个竖线:
8.总结
到此为止,已经将emacs打造成了开发c/C++的简易IDE,由于笔者本身能力所限,文中的不足之处欢迎大家批评指正。我会将我整套配置文件和 需要下载的插件都打包上传,详细的设置和编码,大家可以下载后在使用过程中体会和深入,大家需要看的文件只有_emacs目录下的base.el、 cycode.el、cykbd.el、cyexpand.el四个文件,其他的脚本文件都是笔者从各种地方收集过来的大牛写的各种配置。我的配置文件下载连接是:

my_emacs.7z.001.rar (1.5 MB, 下载次数: 0) my_emacs.7z.002.rar (1.5 MB, 下载次数: 0) my_emacs.7z.003.rar (1.34 MB, 下载次数: 0)

下载后重命名把 .rar删除

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-23 04:26 , Processed in 0.063557 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表