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

原文连接:  http://blog.csdn.net/karotte/article/details/6990031

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

                                                                                                                                                                   ——by0-&-1

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的说明有:

1.      Emacs的基本操作和组合键

2.      启动时的边框和大小及在屏幕中的位置

3.      Emacs的基本常规设定

4.      Emacs的一些开发环境的设定(C/C++、script等等)

5.      Emacs的一些扩展配置(如改变光标的形状等)

   附:本文不会解释lisp编程。

  

   我的工作环境是ubuntu11.04,emacs是直接用sudoapt-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.zip

 

 

====================================================
基本操作:

向上移动一行:ctrl+p
向下移动一行:ctrl+n
向前移动一位:ctrl+b
向后移动一位:ctrl+f

移到行首:ctrl+a
移到行末:ctrl+e

插入一行:ctrl+o
删除一行:ctrl+k

保存:ctrl+x ctrl+s
另存为:ctrl+x ctrl+w

复制:alt+w
剪切:ctrl+w
粘贴:ctrl+y

退出:ctrl+x ctrl+c


===================================================

进入shell:alt+x shell
gdb调试:alt+x gdb
编译:alt+x compile
插入注释:ESC+;


man 手册: f1
info信息:ctrl-f1

查找字符串:f3
关闭当前缓冲区:alt+f3

多个文件切换,显示文件列表,相当与TagList:f4
打开ecb;ctrl+f4

隐藏/显示工具栏:f5
隐藏/显示菜单栏:ctrl+f5

gdb调试:f6
编译程序:f7

在另一个buffer打开eshell :f8
在当前buffer打开eshell: ctrl+f8
eshell清屏:shift+f8
重新打开一个eshell:ctrl+u,ctrl+f8

调用dired命令:ctrl+f9
在其他窗口之间旋转:f9

移动ecb窗口:alt+left/right/up/down
隐藏/显示ecb窗口:f11/shift+f11
显示日历:ctrl-f11

调到函数定义:f12
跳回:shift+f12

goto-line: alt+g
关闭当前窗口,alt+4
关闭其他窗口,alt+1
水平分割窗口,alt+2
垂直分割窗口,alt+3
切换到其他窗口,alt+0


折叠整个buffer的代码:ctrl+-
展开整个buffer的代码:ctrl+=
折叠一个函数的代码:ctrl+_
展开一个函数的代码:ctrl++

yas模板功能:输入关键字+tab
eg:inc+tab == #include <xxxx>
目前默认的模板有:include/main/for/if/do...while/struct/once/printf/class/using/


=================================================================
俄罗斯方块:alt+x,tetris
doctor: alt+x, doctor (就是一个简单的人机对话程序)

 

posted @ 2012-09-09 15:10  loverszhaokai  阅读(244)  评论(0编辑  收藏  举报