内部命令

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

第三行介绍了这个命令的行为: 在文档末尾设置一个标记,并把光标点[45]移动到文档起始。

[注意] 注意
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

[提示] 提示
命令行中,可以使用 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 进行区块选择的方法,是设置一个标记,标记到光标点[45]之间的部分将被选中。

标记的位置为 M-x set-mark-command 时,光标点[45]所处的位置。

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) 

在某些类型的终端中,WIN键 不起作用,建议使用命令。或者绑定到 C-t [46]

;; (在注释里说明原命令和绑定,是一个良好的习惯)
;; C-t 设置标记
(global-set-key (kbd "C-t") 'set-mark-command)	  

 

[重要] 重要
重启 Emacs,或者在 ~/.emacs 文件的缓冲区中执行命令 M-x eval-buffer ,便可以使配置文件立即生效

中止执行

如果想放弃一个命令,可以使用 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



[45] 光标点假定光标为插入式(竖线),位置在覆盖式光标(方块)的左侧。
  事实上,Emacs 中的相关判定以光标点为准!方块形光标只是为了减少视觉疲劳

[46] 这是一个让人头痛不已的地方。因为无论绑到哪,似乎都不太方便:
  使用 WIN键 倒是挺好,但是在字符界面下,WIN键 通常不起作用;同样,C-; 这样使用标点的组合键在字符界面下也不行;
  C-m、C-i 是两个不错的组合,但是 Emacs 认为 C-m 和 RET、C-i 和 TAB 是一个键,这样绑定,你的回车或者 TAB 就成了设置标记;
  最后,C-t 这个键默认绑定的命令几乎没什么用,只是这个键位不是很好按,但这样也有好处──无论你用左手或者右手来按 t键,距离都差不多