嵌入式之行(4):我的emacs(上)

说明:

1、文中字母说明:
c-x是指按Ctrl+x组合键
m-x是指按Alt+x组合键
没有c-或m-的,就是输入该字母本身

2、本文以李迟的实践经验以及在网上看到的配置,简单介绍一下emacs的操作命令,再介绍emacs的配置。喜欢emacs也罢,喜欢vim也罢,喜欢gvim也罢,喜欢linux还罢,喜欢windows更罢,一切都是浮云,由它们去吧。

1、基本命令使用

(1)、编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
emacs foo.c 打开文件(如要同时打开多个可以这样:emacs foo.c bar.c ——默认是水平分割的两个窗口)
c-x c-s 保存文件
c-x c-c 退出emacs(未保存的话会出现提示)
c-x c-f 在emacs中打开文件,这时会提示要打开的文件的路径,可以使用Tab键补全文件名,
打开后会覆盖当前那个窗口(可以打开多个窗口,再打开文件)
c-space开始标记
c-@ 取消标记
m-w 复制选中的
c-w 剪切选中的
c-y 粘贴
c-f 点前移一格
c-b 点后退一格
c-p 点向上一行
c-n 点向下一行
m-f 点向前到下一个单词
m-b 点移动到上一个单词
c-a 点移动到行首
c-e 点移动到行尾
m-a 点移动到句首
m-e 点移动到句尾
m-{ 点移动到段首
m-} 点移动到段尾
c-s 向前搜索
c-r 向后搜索
c-k 删除一行中光标后面的所有东西
c-d 删除点下的字符
m-d 删除点所在的单词
m-g g (再输入行号) 跳到某一行
c-x [ 移至顶
c-x ] 移至底
c-x c-u 选中字符全大写
c-x c-l 选中字符全小写
c-x u 取消操作
c-g 退出某些命令(如,按错了某些命令,可以用这个命令取消它)
好像不能直接使用Tab键的,如要使用,可以:c-q Tab

(2)、编译

1
2
3
4
m-x compile(即按Alt+x键,再输入compile)启动一个编译
默认的是make -k,可以删除,再输入编译的命令,如gcc foo.c bar.c
编译的结果会在新的窗口显示出来,如出错就可以对照来找了错误之处了。
要关闭编译结果窗口,可以使用c-x 0或删除*compilation*等方法。

(3)、窗口删除、切换、变化等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c-x 2 (水平) c-x 3 (垂直)将本窗口分割成多个窗口——是本窗口的内容被分割!故内容是一样的,
可以在选中的窗口的再打开文件、编辑文件等等!!!!:
c-x 0 (这是数字0)关闭本窗口——如果当前只打开一个窗口,输入此命令出现提示,
大意是说你尝试关闭唯一的窗口(更准确的说法是buffer)。
c-x ^ 使窗口增高
c-x } 使窗口增宽
c-x { 使窗口变窄
c-x > 窗口显示右边的内容
c-x < 窗口显示左边的内容
c-x o 切换到另一个窗(这是字母o)——跳到指定的还不知道,所以只能一个一个地跳了
c-x c-b 显示当前的emacs打开了多少个buffer(列表有:在缓冲区的文件(或shell),大小,模式、位置)
c-x b 选择某一个buffer,这时会提示选择哪一个
c-x k 关闭某一个buffer,这时会显示默认要删除的文件,回车即删除默认的文件,
如果要删除其它的,一定要输入列表中显示的全部名称,
如,打开一个shell,要结束它就要输入:c-x k *shell*,这样才行

怎么样?看得头大吧?我当初学习的时候,是拿笔做笔记的,遇到某些记不住的,或好的,都记下来,慢慢地学习,日子久了,也渐渐地熟悉了。所以学习emacs不要怕,只要你克服害怕的心理,不断地使用它,你就会发现它也没那么难。——我的本命年的寒假最大的收获之一就是逼着自己学习emacs,并学会使用它。

好了,下面所讲的emacs配置,主要是针对写代码的。比如多窗口调试,自动补齐,函数、变量查找等等。

2、软件安装

先简单写一下几个工具的安装,我将它们的压缩包都放在.emacs.d目录下。关于这几个工具的作用,百度吧。这些工具对emacs版本都有要求,具体的要看各自的README文件。

(1)、cedet(自动补齐)

解压,进入该目录,输入make,具体可以看INSTALL文件。在配置文件中加载:

1
(load-file "~/.emacs.d/cedet-1.0pre7/common/cedet.el")

(2)、ecb( Emacs Code Browser,即代码浏览器)

解压,make出现错误:

1
2
3
4
Byte-compiling ECB with LOADPATH= ...
emacs -batch -no-site-file -l ecb-compile-script --eval '(ecb-byte-compile t)'
Cannot open load file: /home/latelee/.emacs.d/ecb-2.40/c:/Programme/emacs-22.3/site-lisp/package-development/cedet/common/cedet.el
make: *** [ecb] 错误 255

原来,它依赖于cedet的,修改Makefile文件,找到CEDET这一行,可以看到,它的默认路径不是我们安装cedet的路径,需要修改。
我的改法是:

1
CEDET=~/.emacs.d/cedet-1.0pre7(根据实际情况修改路径)

OK!没有问题。注意,它没有make install的,在配置文件中加载:

1
2
(add-to-list 'load-path "~/.emacs.d/ecb-2.40")
(require 'ecb)

(3)、cscope(查找变量/函数)

解压,进入该目录,./configure,make
加载:

1
2
(add-to-list 'load-path "~/.emacs.d/cscope-15.7a/contrib/xcscope")
(require 'xcscope)

(4)、doxymacs(根据代码写出文档)

解压,进入该目录,./configure,make,make install,之后,在家目录下会有share目录,在.emacs.d目录下新建一个doxymacs目录,将share复制到其下。在配置文件中可以这样加载:

1
2
(add-to-list 'load-path "~/.emacs.d/doxymacs/share/emacs/site-lisp")
(require 'doxymacs)

如果不这样做,在启动emacs时,会出错以下错误:

1
File error: Cannot open load file, doxymacs

因为根据上面加载路径,它没有在.emacs.d找到doxymacs目录,所以会出错。
我主要使用该工具的注释风格,我试过根据代码生成文档,但没有成功。这个过程有点复杂。

上面就是这几个工具的简单安装过程,下面再写一下配置。