http://www.chinaunix.net/jh/23/546293.html
索引
* 基础知识
o 缓冲区
o 信息栏
o 按键描述
o 回显区
o 内部命令
o Emacs命令行
o Emacs终端
o Emacs文件管理器
o 区块选择
o 中止执行
o 基本配置
* 帮助系统
* 基本操作
* 数字参数
* 基础编辑
o 浏览
o 编辑
o 区块编辑
o 搜索和替换
o 其它
* 窗格和缓冲区管理
* 寄存器管理
* 书签管理
* Shell模式
* 宏
o 定义与运行
o 宏轮环
o 命名与保存
o 宏编辑器
o 询问执行
o 计数器
* 文件管理
o 使用帮助
o 查看
o 标记
* 扩展管理
* Guns
* web
* ftp
基础知识
Emacs是一个架构在编辑器上的集成环境,除了最基本的编辑功能,还可以完成文件管理、终端模拟、浏览网页、收发邮件、编译程序等工作。
Emacs使用Elisp语言进行配置和扩展,它本身也可以作为Elisp解释器使用。
Emacs的界面主要由三部分构成:信息栏、回显区(echo)、缓冲区(buffer)
缓冲区
缓冲区(buffer) 类似于常规编辑器的文字编辑区。Emacs并不直接对文件进行修改,而是读取文件的内容并显示在缓冲区中,在收到保存的指令后才将修改写入文件。
缓冲区名称通常为它所读取文件的文件名。
信息栏
在缓冲区之下为状态栏,类似于这种形式
-U:** emacs_tutor.rst (24,0) (reST)----7:55下午---------------
显示当前缓冲区的状态,例如是否已保存、缓冲区名称、光标位置、主模式名称……
标题栏也可以显示一部分信息,并且可以自由定义。
按键描述
Emacs的功能键,通常为组合键。例如
Emacs 实际按键 功能
C-f Ctrl+f 光标前进一格
C-b Ctrl+b 光标后退一格
C-d Ctrl+d 删除一个字符
C-a Ctrl+a 回到行首
Emacs对按键的描述方式中, - 之前的一个字符为修饰键,表示按住该键,再按 - 后面的键。
例如: C-a 表示按住 Ctrl 再按 a 键。 Emacs对其它一些特殊按键的描述
*
C-
按住Ctrl键
*
M-
按住Meta键。在PC上,Meta键通常对应 Alt 键。也可以按一次 ESC 键(Windows下对应 WIN 键)
*
C-M-
同时按住Ctrl键和Meta键
*
S-
Shift键
*
s-
Linux下对应 WIN* 键
*
RET
回车键
*
TAB
Tab键
*
ESC
Esc键
*
SPC
空格键
*
DEL Backspace
退格键
*
Delete
删除键
在后面的部分中,将统一使用Emacs对按键的描述方式。
Emacs十分强大,上面的组合键,远不能涵盖Emacs的功能于万一。除基本的编辑功能键外,其它功能多使用 按键序列: 连续的按下多组快捷键
例如: C-x C-c 表示先按下 C-x ,再按下 C-c 。也就是 Ctrl+x 后,再 Ctrl+c (退出Emacs)
接下来 C-h t ,进入 《Emacs 快捷指南》
回显区
C-x h (先按Ctrl+x 再按h)后,您会发现状态栏和编辑器底部之间的区域出现 Mark set 字样。同时,整个缓冲区的内容都被选中。
它是一个迷你缓冲区(minibuffer),叫作回显区(echo area),提示您正在进行的操作,比如 Mark set(设定标记)
如果一个按键序列没有完成,却停止了输入。大约两秒后,回显区会显示已输入部分,以免您忘记。千万不要以为是Emacs反应迟钝:)
内部命令
C-h k 后,回显区提示
Describe key (or click or menu item):
接着 C-x h ,您会发现,缓冲区被水平分割为两个。另一个名为 *help* 缓冲区中显示的内容为
C-x h runs the command mark-whole-buffer
which is an interactive compiled Lisp function in `simple.el'.
It is bound to C-x h, <menu-bar> <edit> <mark-whole-buffer>.
(mark-whole-buffer)
Put point at beginning and mark at end of buffer.
You probably should not use this function in Lisp programs;
it is usually a mistake for a Lisp function to use any subroutine
that uses or sets the mark.
[back]
第一行说明了 C-x h 运行的命令为 mark-whole-buffer
第二行说明了该命令由 simple.el 这个扩展提供,绑定到 C-x h 、 菜单栏-编辑-标记全部缓冲区 、 和命令 mark-whole-buffer
第三行介绍了这个命令的行为: 在文档末尾设置一个标记,并把光标点移动到文档起始。
Note
光标点假定光标为插入式(竖线),位置在覆盖式光标(方块)的左侧。
事实上,Emacs中的相关判定以光标点为准!方块形光标只是为了减少视觉疲劳:)
Emacs使用命令进行处理,快捷键只是一种发送命令的方法!
一般情况下,我们用不到这么详细的说明,而且英文看起来也比较吃力。您可以使用 C-h c 以简洁模式查看说明。 只在回显区显示键位和它执行的命令:
C-x h runs the command mark-whole-buffer
通常这就足够了。
如果您知道一个命令,而不知道它绑定到什么键上,您可以使用 C-h w ,也就是命令 Where-is
Emacs命令行
由于Emacs太过强大,内部命令恒河沙数,根本不可能有同样数量的快捷键位来绑定它们!
对于没有绑定的命令,可以使用 命令行 执行!
M-x (Alt+x) 开启命令行,回显区显示为 M-x ,然后输入 newline
这个命令默认绑定在回车键,所以它和回车键的作用一样为 换行
C-h w newline 结果是: newline is on RET
Tip
命令行中,可以使用 TAB 补全,使用 M-p 上翻, M-n 下翻
在后面的部分中,统一使用 M-x command 来表示 内部命令 command ;内部命令以 (command) 的形式写到配置文件中,当然配置文件稍稍复杂一点,很少直接这么写:)
Emacs终端
M-x shell 激活Emacs终端。可以在Emacs终端中使用外部命令。
需要注意的是,Emacs终端是哑终端,一些类型的输出不能够正确显示。
在Emacs终端中使用 exit 命令退出。
M-! (Alt+Shift+1)临时执行一条外部命令,并输出在名为 *Shell Command Output* 的缓冲区中 (M-x shell-command)
C-u M-! (Ctrl+u Alt+Shift+1)临时执行一条外部命令,并输出到光标位置。
Emacs文件管理器
C-x d 进入Dired列表模式
C-x C-d 获取文件列表(简洁)
C-x C-f 打开文件,输入路径为打开目录
详细介绍见 文件管理
区块选择
很多时候,我们需要选中缓冲区中的某一部分内容。和大多数程序一样,您可以在被选择区块的起始点按下左键,移动鼠标,在结束点释放左键,这部分区块便被选中。
这种方式效率并不高,而且一些场合并没有鼠标支持,例如控制台或者远程登录。
事实上,Emacs进行区块选择的方法,是设置一个标记,标记到光标点之间的部分将被选中。
标记的位置为 M-x set-mark-command 时,光标点所处的位置。
M-x set-mark-command 是设置标记的内部命令,默认绑定在 C-SPC 键上。
如果使用输入法,这个键位多半是切换输入法的快捷键。键盘指令会先被输入法拦截下来,而无法发送到Emacs。
当然也可以使用 M-@ 来设定标记。不过 M-@ 原绑定为 M-x mark-word ,虽然差不太多,但有时并不好用;况且对于一个常用的命令来讲, M-@ 键位的难度太高了……
Emacs的键位中,几乎没有默认绑定在 WIN 键上的命令,不妨利用一下:)
在Emacs的用户配置文件 ~/.emacs 中添加如下内容:
;; WIN+Space 设置标记
(global-set-key (kbd "s-SPC") 'set-mark-command)
重启Emacs,或者在 ~/.emacs 文件的缓冲区中执行命令 M-x eval-buffer ,便可以使配置文件立即生效:)
在某些类型的终端中,WIN键不起作用,建议使用命令。或者绑定到 C-z (Ctrl+z)
;; (在注释里说明原命令和绑定,是一个良好的习惯)
;; C-z 设置标记 ;; C-z:M-x iconify-or-deiconify-frame:C-z,C-x C-z
(global-set-key (kbd "C-z") 'set-mark-command)
C-z ,原为 M-x iconify-or-deiconify-frame 键为: C-z, C-x C-z 。绑定后,仍可以使用 C-x C-z 挂起Emacs。
中止执行
如果想放弃一个命令,可以使用 C-g (M-x keyboard-quit)打断。
当然了,建议您使用快捷键 C-g ,因为这时 M-x 通常是没有效果的
ESC ESC ESC (M-x keyboard-escape-quit)可以从一些交互命令中退出。
例如从 询问替换 M-x query-replace 中退出。
如果 C-g 不能搞定,这时多半需要连按三次 ESC
基本配置
您已经知道了,Emacs的配置文件为 ~/.emacs 。配置文件中,以 ; 起始到行末的部分为注释。
让我们些简单配置一下:
;;========================================
;; 外观设置
;;========================================
;;禁用工具栏
(tool-bar-mode nil)
;;禁用菜单栏,F10 开启关闭菜单
(menu-bar-mode nil)
;;禁用滚动栏,用鼠标滚轮代替
;;(scroll-bar-mode nil)
;;禁用启动画面
(setq inhibit-startup-message t)
;;========================================
;; 键绑定
;;========================================
;; C-z 设置标记 ;; C-z:M-x iconify-or-deiconify-frame:C-z,C-x C-z
(global-set-key (kbd "C-z") 'set-mark-command)
;;F10显示/隐藏菜单栏 ;; M-x menu-bar-open
;;(global-set-key (kbd "F10") 'menu-bar-mode)
;;WIN+s进入Shell ;; M-x shell
(global-set-key (kbd "s-s") 'shell)
;;(define-key ctl-x-map "\M-s" 'shell)
;;WIN+space 设置标记
(global-set-key (kbd "s-SPC") 'set-mark-command)
;;========================================
;; 缓冲区
;;========================================
;;设定行距
(setq default-line-spacing 4)