初尝Emacs

EmacsEditor MACroS(宏编辑器),是一种文本编辑器,在程序员和其他以技术工作为主的计算机用户中广受欢迎。最初由Richard Stallman于1975年在MIT协同盖伊·史提尔二世共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由盖伊·史提尔二世、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。自诞生以来,Emacs演化出了众多分支,其中使用最广泛的两种分别是:1984年由Richard Stallman发起并由他维护至2008年的GNU Emacs,以及1991年发起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持着相当的兼容性。它们都使用了Emacs Lisp这种有着极强扩展性的编程语言,从而实现了包括编程、编译乃至网络浏览等等功能的扩展。(更多内容参见维基百科

今天在Ubuntu中学习了一下Emacs的基本使用方法,感觉还不错。只是由于长期生活于Windows的环境下,对键盘的命令操作十分不习惯。不过Emacs的快速指南十分贴心,tutorial中讲了很多简单但常用的命令,还指导着进行实践操作。当然,今后真正工作中还是要靠联机手册(Info)。

之前一说起Linux上的编辑器,周围的人都推荐Vim,还把它吹的神乎其神。我也亲眼见证过使用Vim所演绎的奇迹。不过我最早听说的大牛还是Emacs。所以好奇之下搜索了一下它们的比较。结果发现,这还真不敢比呢,两大阵营各有高手压阵,动不动就板砖伺候呀。不过也读到一篇不错的文章,觉得说的很有道理,这里分享一下:《钗黛双收:若你也同Vim难割舍,却又看Emacs情切切》。另外,维基百科上还有一个对当前文本编辑器的各种比较,一看真惊了!竟然有那么多收费和不收费的编辑器啊!

补充两篇好文章:

1.《Emacs是一种信仰!世界最强编辑器介绍》(作者:王垠)

2.《一年成为Emacs高手(像神一样使用编辑器)》(作者:陈斌)

为方便以后需要,将tutorial中的一些基本命令记录如下:

说明:下面的C-字母中,C代表Ctrl;M-字母中,M代表Meta或者Alt(依不同键盘而定)。

1.退出Emacs:
  C-x C-c (两个连续的组合键)

2.以下命令在翻页浏览时相当有用:
  C-v     向前移动一屏
  M-v     向后移动一屏
  C-l     重绘屏幕,并将光标所在行置于屏幕的中央(注意是 CONTROL-L,不是 CONTROL-1)

3.基本的光标控制命令,其中也包括了整词和整句的移动:
  C-f     向右移动一个字符(forward)
  C-b     向左移动一个字符(backward)
  M-f     向右移动一个词【对中文是移动到下一个标点符号】
  M-b     向左移动一个词【对中文是移动到上一个标点符号】
  C-n     移动到下一行(next)
  C-p     移动到上一行(previous)
  C-a     移动到行首
  C-e     移动到行尾
  M-a     移动到句首
  M-e     移动到句尾
  M-<     可以将光标移动到所有文字的最开头
  M->     可以将光标移动到所有文字的最末尾

4.大部分的Emacs命令接受数字参数,且对于多数命令而言这些数字参数的作用是指定命令的重复次数。
  为一个命令指定数字参数(也就是重复次数)的方法是:
  (1)先输入 C-u,然后输入数字作为参数,最后再输入命令
  (2)如果你有META(或EDIT或ALT)键,那么还有另一种办法:按住 META 键不放,然后输入数字。
  (3)举例:C-u 8 C-f 会向前移动 8 个字符。

5.如果 Emacs 对你的命令失去响应,你可以用 C-g 来安全地终止这条命令。
  C-g 也可以终止一条执行过久的命令。
  C-g 还可以取消数字参数和只输入到一半的命令。

6.C-x 1       只保留一个窗格(也就是关掉其它所有窗格)

7.关于“删除”操作的小结:
  backspace   删除光标前的一个字符
  C-d         删除光标后的一个字符
  M-backspace 移除光标前的一个词
  M-d         移除光标后的一个词
  C-k         移除从光标到“行尾”间的字符
  M-k         移除从光标到“句尾”间的字符

8.移除一部分内容的通用办法:
  (1)首先把光标移动到你想要移除的区域的一端;
  (2)然后按 C-@C-SPC(任一即可,SPC指空格);
  (3)接着将光标移动到另一端;
  (4)再按 C-w 就可以把位于这两点之间的所有文字移除了。
  注意:“移除(kill)”和“删除(delete)”的不同在于被移除的东西可召回,被删除的则不行。

9.召回的命令是 C-y(yanking,召回)。它会在光标所在处插入你最后移除的文字。
  紧接着再按 M-y 就可以召回再前一次被移除的内容,再按一次 M-y 又可以召回再上一次的……
  连续使用 M-y 直到找到你想要召回的东西。

10.可以用 undo 命令进行撤销:C-x uC-_ 也是撤销命令;它的作用跟 C-x u 一样,但是它比较容易多次输入。

11.C-x          字符扩展。C-x 之后输入另一个字符或者组合键。
   M-x          命令名扩展。M-x 之后输入一个命令名。
   (1)C-x C-f   寻找一个文件
   (2)C-x C-s   储存这个文件
   (3)C-x C-b   列出缓冲区
   (4)C-x b     切换缓冲区
   (5)C-x s     保存多个缓冲区

12.在控制台下,C-z 可以暂时离开Emacs――当然,你还可以再回来。
   (1)在允许 C-z 的系统中,C-z 会把Emacs“挂起”,即它会回到shell但不退出Emacs。
      在常用的shell中,通常可以用“fg”或者“%emacs”命令再次回到Emacs中。
   (2)在没有提供挂起功能的系统中,C-z 会在Emacs之下创建一个子shell来运行其它程序。
      这种情况下,通常用shell命令“exit”从子shell回到Emacs。

13.用 M-x auto fill mode 启动自动折行模式。再用一次这条命令,自动折行模式会被关闭。

14.C-s 是向前搜索,C-r 是向后搜索。

15.在输入 C-x 2,它会将屏幕划分成两个窗格,而光标则停留在上方的窗格里。
   用 C-M-v 滚动下方的窗格。向上滚动是 C-M-S-v。
   输入 C-x o(“o”指的是“其它(other)”),将光标转移到下方的窗格。

16.离开递归编辑可以用 ESC ESC ESC。
   这是一个最通用的“离开”命令,你甚至可以使用它来关掉多余的窗格,或者离开小缓冲。

17.C-h c     输入 C-h c 之后再输入一个组合键,Emacs 会给出这个命令的简要说明。
   C-h k     相比 C-h c 可以想得到更多的信息。
   C-h f     解释一个函数。需要输入函数名。
   C-h a     相关命令搜索(Command Apropos)。

One thought on “初尝Emacs

  1. 暮春小友
    暮春小友
    2012-02-05 at 12:41

    嗯,你教我vim,加油!

Leave a Reply

Your email address will not be published. Required fields are marked *