Emacs 使用 (1)
就如同大家知道的,Emacs不仅仅是一个编辑器,他还有许多强大的功能。
本文就介绍的仅仅是很少的一部分。
本文主要就以下几个方面来介绍Emacs:
* 安装
* 基本使用
* 配置
* vi 摹拟
* 察看源代码
* 收发邮件
* 做patch
* 在源代码中自动插入GPL
* 安装
Emacs 的安装并不复杂一般的发行版中都带有 Emacs, 如果你需要使用源代码来安装的话需要下面几个包:
emacs-xx.x.tar.gz : Emacs 的主要包,如果你不需要国际化支持的话,这一个就够了.(我当然需要,否则我怎么处理中文)
leim-xx.x.tar.gz Emacs 的多语言支持,如果进行国际化软件的开发,当然需要了.
intlfonts-1.1.tar.gz 多语言的字体包.
解开压缩包
tar xvzf emacs-xx.x.tar.gz
tar xvzf leim-xx.x.tar.gz
(这个就不用解释了吧)
./configure --with-pop --with-gssapi
--with-pop 增加pop邮件的支持
--with-gssapi 我不知道是什么东西
如果还需要kerberos认证的话: --with-kerberos 或者 --with-kerberos5 (kerberos 版本5)
$make
#make install
(更不用解释了)
至于字体的安装请察看README文件
可惜 相对vim来说Emacs 的确太大了.(如果不是为了兴趣所至,单就写些源代码的话,vim 也是很强悍的)
* 基本的使用:
我就不用说用鼠标怎么去点或者敲什么命令了,如果在X下的虚拟终端上使用而且不想使用图形模式的话,用emacs -nw. 但是这样就少了很多特性。退出Emacs使用File->Exit 或者 C-x C-c . C-x 是指同时按Ctrl 和 x,同样道理C-c 是同时按Ctrl 和 c.
在退出的时候Emacs检查你是否会修改了一些文件,会询问你是否保存,如果是用y,否则n.如果想继续编辑文件,用C-g取消就是了。
在X window 下,Emacs 可以控制许多的frame, 每一个都有菜单和编辑区.在编辑区的下面是状态条,上面可以显示很多的信息,在状态条的下面是minibuffer,Emacs的许多命令就是通过它来输入的,而且Emacs也通过它显示很多的信息.
(没想到我说了这么多的废话,这些东西在每个介绍Emacs上的东西都有,我就不罗嗦了,大家找来看看吧)
在Emacs中有很多lisp写好的命令,执行他们敲入:M-x (-x function-name .如果要取消的话用C-g
Emacs 中还有键盘影射(global keymap)的功能,在不同的模式中有不同的影射,当然你也可以改变他们. 常用的模式有:
c-mode : 用M-x c-mode 进入: c 代码编辑模式;
M-x c++-mode : c++ 编辑模式
M-x sh-mode :shell 脚本编辑模式
M-x m4-mode : Autoconf 编辑模式
M-x texinfo-mode :Texinfo 语言编辑模式
M-x makefile-mode :Makefile 文件编辑模式
* 配置
Emacs 可以用X的资源文件配置(好像现在用的不多了),在Linux下可以编辑 /etc/X11/Xresources 或者$HOME/.Xdefauls 改变.
!Emacs defauls (注释语句用!表示)
emacs*Background: Black (背景为黑色)
emacs*Foreground: White (前景为白色)
emacs*pointerColr: White (鼠标的颜色)
emacs*cursorColor: White (光标的颜色)
emacs*bitmapIcon: on (显示图标)
emacs*font: fixd (当然示字体了)
emacs*geometry: 80x40 (初始窗口的大小,字符宽度和高度衡量的)
在Emacs 启动的时候都要去读取用户目录下的 .emacs 配置文件.在这个文件里面可以改变缺省的Emacs的行为.
1. 最常见的是改变全局的变量代表的行为,这些变量是通过 setq 命令设定的,其语法如下:
(setq variable value)
例如:
(setq viper-mode t) (进入vi摹拟模式)
你可以在Emacs中用 M-x describe-variable 来察看这些变量的作用.
2. 还有一些情况下 Emacs 使用系统环境变量, 可以用(setenv "variable" "value")来设置:
如 (setenv "INFOPATH" "/usr/info:/usr/local/info")
3. 改变缺省的键盘影射:
(global-set-key [key sequence] function)
如: (global-set-key [f12] doctor)
在Emacs中按下f12 就会开始doctor 这个游戏.
察看Emacs中的函数可以用M-x describe-function.
4. 在很多情况下,设置全局的键盘影射不是一个好的办法,我们需要的是在不同的模式下使用不同的键盘的影射,比如下面的一个Emacs Lisp函数:
(defun texi-insert-@example()
"INsert an @example @end example block"
(interactive)
(beginning-of-line)
(insert "\n@example\n")
(save-excursion
(insert "\n")
(insrt "@end example\n")
(insert "\n@noindent\n")))
如果我们想在texinfo模式下按f9就执行这个函数,而不是其他的模式(比如 c-mode),我们可以这样做:
(defun texinfo-elef-hook ()
(define-key texinfo-mode-map [f9] exi-insert-@example))
define-key 和 global-set-key 很相似,不同的地方在于加上了一个名字参数限制,所有"name" -mode 的局部影射是 "name"-mode-map(如c-mode-map 就是c-mode 下的局部影射). 我们必需在让 texinfo-mode 进入的时候调用这个函数,调用add-hook 命令让texinfo-mode进入时调用的texinfo-mode-hook自动调用texinfo-elef-hook 来执行影射f9和texi-insert-@example()函数.
语法如下:
(add-hook exinfo-mode-hook exinfo-elef-hook)
当然,你可以使用多次add-hook命令来执行多个函数.
5. 你也可以写自己的编辑模式了。(好像需要去学习lisp语言,而且我发现这本书好贵)
现在,我们可以进行一些简单的配置了,当然更复杂的配置需要你用LISP写一些函数.
下面列举一些:
(set-background-color "black") 设置背景颜色为黑色
(set-foreground-color "white") 设置前景颜色为白色
(set-language-environment Chinese-GB) 进入汉语处理环境
(set-terminal-coding-system chinese-iso-8bit) 设置终端codeing 为汉语模式(终端下使用)
(set-keyboard-coding-system chinese-iso-8bit) 键盘模式为汉语 (终端下使用)
(setq user-mail-address "[email protected]") 设置mail地址 (在使用mail系统中使用)
(setq user-full-name "Kerberos Zhang") 同上
还可以在状态条上显示一些小东西:
(display-time) 显示时间
(line-number-mode t) 显示光标所在的行
(column-number-mode t) 显示光标所在的列
在使用鼠标进行剪切复制的操作中, 1 键(右撇子的左键)进行选择,2 键则粘贴.很不爽的是,粘贴后,光标通常会到粘贴的地方,如果在粘贴后不想让光标移动地方,可以用下面的命令
(global-set-key [mouse-2] yank)
打开语法高亮功能
(global-font-lock-mode t)
去掉窗口上的滚动条
(setq scroll-bar-mode nil)
很多Emacs的版本在编辑configure.in 和 Makefile.am 时候不自动转入相应的 m4-mode 和makefile-mode, 你可以自己加上:
(setq auto-mode-list
(append (
("configure.in" . m4-mode)
("\\.m4\\" . m4-mode)
("\\.am\\\" . makefile-mode))
auto-mode-alist))
如果你的Lisp包不是装在缺省的路径下,可以这样让Emacs找到:
(setq load-path
(append "/usr/share/emacs/site-lisp"
"/usr/local/share/emacs/site-lisp"
(expand-file-name "~lf/list")
(load-path)))
今天累了,先写到这里,下次写vi摹拟的使用,怎样察看程序源代码更方便,使用Emacs 收发邮件等等。
唉,刚学习使用Emacs,翻译的可能有许多不正确的地方,请大家指正.
原文见: ftp://ftp.ugcs.caltech.edu/pub/elef/autotools/toolsmaual.html发布人:imkerberos 来自: