当前位置:Linux教程 - Linux - Emacs 使用 (1)

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 "imerberos@sohu.com") 设置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 来自: