把Emacs配置成C++和LaTeX环境
半闲居士,2014.2
写在前面
开始做科研也有不少时间了,拜读过各种论坛上的大哥们的文章,受益匪浅。不禁感叹,这些写技术博客的人可真不容易,确实给我们新手入门带去了不少的帮助。于是自己也想动手做点贡献了。
我的科研工作主要是编写机器人上的程序,需要在Linux下面进行C++的开发。众所周知Linux下面不怎么用IDE,只要会弄vim或Emacs就可以了。我最早接触的是Emacs,等到学会之后再想尝试一下vim发现自己确实是想多了,手克制不住地就往Emacs的快捷键上摆啊...所以干脆就一直用Emacs。
我用Emacs基本只有两件事:编程和写论文。Emacs作为C++和LaTeX的环境是相当棒的。在C++里你可以像在IDE里一样跳来跳去,各种补全,在LaTeX里你还可以自动插环境,写完公式之后能马上preview。总之是很爽的。今天给大家分享一下我的Emacs配置。我会详细地告诉读者们配置的方法。当然首先晒一下我的Emacs截图:左边四个是ECB的代码浏览窗口,右边是书写代码的窗口。
需要提到的是,配置文件主要参考了陈杨前辈的博客:http://www.cnblogs.com/karotte/archive/2012/06/06/emacs_ide.html
以及JamesChen的博客:http://blog.chinaunix.net/uid-26938778-id-3195015.html
在此感谢这两位前辈。因为本文主要讨论在Linux下的开发,就不讲Windows下怎么做了。当然你可以Windows下拿Emacs写论文,完全没问题的。用Emacs写LaTeX的方法请参见这篇文章,很不错的: http://cs2.swfu.edu.cn/~wx672/lecture_notes/linux/latex/latex_tutorial.html
我的配置文件下载地址:http://pan.baidu.com/s/1qWoAKFy
第一步:安装Emacs及各种插件
Ubuntu默认是不带Emacs的,所以你需要自己安装它。直接apt-get即可:
sudo apt-get install emacs
这样装上的Emacs是emacs23,用来开发和写论文是足够了。如果你想用它写LaTeX,请安装AucTeX,这个插件现在放在仓库里了,安装也很方便:
sudo apt-get install auctex
还要记得装好基本的TexLive(1个多G,慢慢下吧):
sudo apt-get install texlive-full
然后,我们要下载与C++有关的几个插件。如果你下了我的配置文件,那这些插件就都在里面了。主要是这几个:
auto-complete 自动补全神器
cedet 1.1 C++代码管理工具,功能强大但速度较慢
color-theme Emacs配色方案,从白色变为五颜六色
ecb 在cedet基础上开发的插件,用于代码浏览
yasnippet 一样的自动补全
highlight symbol 语法高亮
几个次要的我就不列了。下面讲解一下基本配置方法。
第二步,设置.emacs
emacs的配置文件是在你用户主目录下的.emacs,你可以用gedit打开它:
gedit ~/.emacs
我的配置也写在里面,该划开的地方都划开了。如果你不用LaTeX,可以把相应的段落删掉。
我的插件放在~/.emacs.d/plugins/中,你会在那里看到一大堆东西,但是不要慌,需要你自己动手配置的其实不多。大多数你只要丢在那儿不管就可以了。在我的配置文件中,我把除cedet之外的插件都放在了.emacs.d/plugins下,而cedet单独列开了,需要你自己编译后拷进去。接下来我们依次要做:
编译cedet1.1
编译ecb
然后就万事大吉了。我还会提醒你一些小细节。我们来一步步地做:
-
编译cedet1.1
先转到你的下载目录的cedet-1.1下:
sudo make
基本不会出现问题。然后把整个cedet-1.1拷到~/.emacs.d/plugins/下:
cp -r cedet-1.1 ~/.emacs.d/plugins/
-
编译ecb
这一步一定要在编译cedet之后再做,不然是ecb没法编译的。一样的,先转到.emacs.d/plugins/ecb-2.40下。注意,这里的Makefile是要改一下的,请你自己修改:
gedit Makefile
把CEDET=/home/y/.emacs.d/plugins/cedet-1.1这一行改成你的cedet插件所在的目录。其实只要改你的用户名就可以了,我的用户名叫y。
然后就是:
sudo make
编译通过之后就没事了。(注:网上下载的ecb2.40和cedet1.1有一个版本文件,在我的配置文件中已经改过来了。)
大功告成!但是还有一些细节...
恭喜你,如果你按照上述步骤做下来,这时你打开emacs后就会清楚地看到那个黑黑的界面了。接下来你可以试着写一个Helloworld.cpp试试,体验一下自己补全和跳转的功能。但我还有几个地方要提醒你:
-
很多时候你会用到第三方库,比如opencv什么的。你当然知道怎么安装这些库,但要实现补全和跳转,你需要在.emacs文件中配置一下。配置的地方在这里:
(defconst cedet-user-include-dirs
(list ".." "../include" "../.." "../../.." "../../include" "../../../inlcude" "../inc"
"../.." "../../include" "../../inc"
"/usr/include" "/usr/local/include" "usr/local/include/opencv2" "usr/local/include/opencv" "usr/local/include/g2o"))
(setq cedet-sys-include-dirs (list
"/usr/include" "/usr/local/include" "usr/local/include/opencv2" "usr/local/include/opencv" "usr/local/include/g2o"))
约93行左右,这里是自动跳转的设置,把你要加的头文件所在目录放进去即可,也可以把我的删掉。
-
使用方法
使用方法最好是你自己去体验,我可以讲一个大概:
C-f4 或菜单中的tool->start ecb即可打开ecb; 开始ecb后可以按Alt(Meta)+方向键进行窗格的切换。
键入代码是会有阴影提示补全,你也可以按Tab键选择其中一种补全。
按F12可以自动跳转到相关处,例如变量就会跳到它的定义处,include头文件的话会直接跳进该头文件,再按Shift+F12跳回来。但是最初开始的时候emacs会分析你系统里的头文件,导致程序停止响应一会儿,请耐心等待。
F8可以新开一个窗口运行shell命令。
其他的功能请自行体验吧。有问题欢迎提问。