GNU Emacs Manual 24.3 第二章

第二章

1 字符,快捷键和命令

本章介绍Emacs输入命令使用的字符集,还有快捷键和命令的概念,Emacs如何解析你的键盘输入和鼠标输入。

1.1 用户输入的种类

GNU Emacs主要是为键盘设计的。虽然它也能够使用鼠标从菜单栏和工具栏进行选择,但是这都来的不比键盘快,并且,本文档只要就是讨论的是如何用键盘编辑。

Emacs所支持的键盘输入是ASCII的超集,包括'a','B','3','=','RET','TAB','DEL','ESC',F1,Home等等。

Emacs也是别控制字符,Emacs把它们叫做修饰键。两个很常见的修饰键是Control和Meta键,在常见的键盘上分别为(Ctrl和Alt)。举个例子,Control-a表示按住Ctrl键然后键入a;我们简写为C-a。类似的,Meta-a,或者M-a,表示安装Alt键然后键入a。修饰键后面也可以接非字母数字的字符,比如C-F1或者M-left。

你可以使用ESC a替代M-a,比如,你可以使用ESC C-a替代C-M-a,不像Meta键,ESC键是单独的输入的。你不需要按住ESC键再按别的键。这个特性在那些字符终端中很有用,因为他们的Meta键有的工作的不太对劲。

在图形显示中,窗口manager可能会阻塞住键盘的某些输入,比如M-TAB,M-SPC,C-M-d和C-M-l。如果你有这样的问题,你可以自定义你的window manager不去阻塞这些键或者重新给Emacs绑定别的键(参见 第三十三章 [Customization])。

所有的这些输入字符,或者是鼠标点击等等输入都叫做输入事件。参看 The Emacs LispReference的'Input Events'这节获得详细的Emacs内部如何处理输入事件。

1.2 快捷键

Emacs中的一些命令对应一个输入事件,比如C-f表示在当前buffer向前移动一个字符,其他的命令使用好几个输入事件,比如C-x C-f或者C-x 4 C-f。

一个按键序列,或者简单地说快捷键,表示一组输入事件组成的单元。如果一个按键序列出发了一个命令,我们把它叫做一个完整的键;比如,C-f C-x C-f和C-x 4 C-f都是完整的键。如果一个按键序列没有足够长表示一个命令,我们叫它前缀键;我们从上面的例子中看到,C-x和C-x 4都是前缀键。每个键序列要么是一个完整的键,要么是前缀键。

一个前缀键结合跟在后面的输入事件变成更长的键序列,比如,C-x是一个前缀键,所以单独的C-x不能调用一个命令,反而,Emacs回等待更多的输入。C-x联合接下来的输入事件构建了一个两个输入事件的按键序列。在按键序列的长度上没有限制,但是在实践中,很少长度超多3或者4个按键事件。

你不能在一个完整的键上加入更多的输入事件,比如,因为C-f表示一个完整的键,那么C-f C-k表示两个按键序列而不是一个。

默认的情况下,Emacs中的前缀键包括C-c,C-h,C-x,C-x RET,C-x @,C-x a,C-x n,C-x r,C-x v,C-x 4,C-x 5,C-x 6,ESC,M-g,和M-o。(其中F1和F2也代表C-h和C-x6)。这个列表不是一尘不变的,如果你自定义Emacs,你可以创建更多的前缀键。你甚至可以祛除一些标准的键,当然这些对初学者来说并不建议。比如,你可以祛除C-x 4的定义,那么C-x 4 C-f将变成无效的按键序列。(参见 33.3节 [Key Bindings])。

在一个前缀键的后面键入帮助键(C-h或者F1)会罗列出以这个前缀键开始的命令。一个例外是ESC:ESC C-h 和C-M-h等价,这个按键序列是做别的事情的。所以你可以使用F1去显示以ESC开始的按键列表。

1.3 快捷键和命令

本帮助指南涵盖了所有按键的作用,但是Emacs不提供按键的直接意义,取而代之的是,Emacs提供命令的作用,然后给按键赋予其绑定的命令的含义。

每个命令都有他的程序员起得名字。这个名字通常是由几个英文单词以波折号分割组成的。比如:next-line或forward-word。在Emacs内部,每个命令都是一个Lisp函数,命令产生的作用都来自于运行这个函数产生的效果。参见 The Emacs Lisp Reference Manual的'What Is a Function'一节。

命令和其绑定的按键之间的映射关系都被记录在一个叫keymaps的表里,参见33.3.1节[Keymaps]。

每当我们说"C-n 表示垂直移动到下一行",这里表示的是Emacs的定义,next-line命令表示垂直向下移动,C-n有效的原因在于它绑定到了next-line上,如果你把C-n重新绑定到命令forward-word上,C-n就会向上一动一行。

在这份指南中,我们会反复说起像C-n这样的命令,严格的说就是它绑定到了一个命令。我们通常在快捷键的后面用括号写出这个按键绑定的命令的名字。比如,我们会说"命令C-n(next-line)垂直向下移动point",表示命令next-line垂直向下移动,并且C-n绑定到了这个命令。

既然我们讲到了定制化,我们就该告诉你有关变量的事情。通常命令的描述中会提到"可以通过变量mumble-foo改变"。一个变量就是一个存放值得名字。本指南中提到的很多变量都是为了定制Emacs的行为:很多Emacs种的命令都会检查一些变量的值,通过它们的值表现不同的效果。你可以暂时忽略这些有关变量的内容,直到你对定制感兴趣。然后参考关于变量的基本信息(参见33.2节 [Variables])。

Date: 2014-06-22T15:39+0800

Author: kirchhoff

Org version 7.9.3f withEmacs version 24

Validate XHTML 1.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值