飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3353|回复: 2

Emacs 零海拔入门

[复制链接]
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-5-25 17:50:23 | 显示全部楼层 |阅读模式
    Emacs Now!

    长期以来,我对瑞士军刀式的工具心有独钟。虽然长期使用的是Windows上各种身形庞大的破解版IDE,却一直对Emacs/VIM心向往之。自从在工作中介入Python,就有意的开始学习Emacs的使用。从去年起,适逢GNU Emacs 23浮出水面,困扰已久的中文问题基本上成为历史了,于是,我便开始大力转向Emacs。现在,应该说学习和使用Emacs已经不再像前几年那样麻烦,对Emacs抱有兴趣,又心生向往的同学,现在可以考虑向宝山进发了。

    地图与旅游手册

    去一个陌生地方旅游时,你需要在出发前读一下旅游手册,看一看地图。在学习Emacs之前,也有一些内容需要你先了解一下。

    可能会困扰你,但应该接受的

    Emacs 是一个通用编辑器,一个非常古老的编辑器,甚至比现在你见到的很多操作系统(及发行版)都要古老的多。所以,它有一些操作习惯,会令你感到不适应。然而,如果你坚持下去,会有收获的。

    Emacs 发展了数十年,积累了大量的技术资源,数量之大,质量之高,是很多新潮工具难以望其项背的。需知编码工作的本质是文本编辑。Emacs 在文本编辑方面的积累,比我们的年龄更长,所以,在Emacs不能满足你的时候,请先搜索教程,看看是否你漏过了什么操作要点。如果确信Emacs中没有这个内置功能,请搜索相关的mode。

    Emacs 有着方便的扩展和定制机制,然而它使用的Emacs Lisp语言,作为一种Lisp的变种,可能是你从来没有见过的。然而尽管它的样子看起来古怪,却是一种非常值得学习,也非常好用的语言,不妨一试。

    Emacs是一个高度可扩展的环境。你在学习它的同时,也应该不断的改变它,使你们相互磨合。这是一个有趣的体验过程。

    Emacs 有若干实现版本,其中影响最大的是GNU Emacs。出于中文支持的考虑,后面的内容以GNU Emacs 23为准,

    插件与配置

    Emacs的插件,被称为mode。首先emacs有着优秀的可扩展性,使用elisp可以编写它的插件。事实上几十年来积累的开源插件足以满足大多数的需求。很多时候,定制Emacs就是寻找适合的插件。在后面,我也会以一些常用的插件介绍为主。

    快捷键

    Emacs 中定义了大量的快捷键,各种插件也经常会定义自己的快捷键。在Emacs的文档中,通常会使用一种简短的方式来介绍快捷键:

    • 大写 C 表示 Control 键
    • 大写 M 表示 Alt 键 -- 它的出处在于有些机器的键盘上会有称为Meta的功能键。
    • 同时按下若干键时,用 - 号表示分隔,如 C-f 表示同时按下 Control 和 f 键。
    • 按键有先后时,用空格分隔,如C-x f,表示同时按下 Control 和 x,然后松开,再按下 f。

    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2010-5-25 17:50:57 | 显示全部楼层
    Emacs 安装
    GNU Emacs 目前正在经历一次变革,除了正式发布的21版、正在Beta阶段的22版,还并行开发了Emacs的Unicode内核版:GNU Emacs 23。这个版本解决了困扰我很久的“半个中文字符”的问题,我也是因此才欣然使用GNU Emacs。

    目前Emacs 23还处于Alpha阶段,但是实际上已经非常可靠,我一直在使用这个版本。Windows用户可以到 [http://ntemacs.sourceforge.net] 下载编译好的版本,Ubuntu 用户可以将以下的源添加到软件源列表中:


      deb     http://ppa.launchpad.net/avassalotti/ubuntu RELEASE main
      deb-src http://ppa.launchpad.net/avassalotti/ubuntu RELEASE main金山内部,可以直接从我们自己的内部镜像取到这个版本。

    当然,如果你喜欢,也可以从GNU的CVS站签出源码,自己编译,这是一个漫长的过程,不过对于一个Hacker,也是个不错的学习机会。网上有大量的文章介绍如何编译emacs,这里就不多介绍了。需要注意的是,大多数关于编码的配置介绍,对于GNU Emacs 23的用户都可以置之不理,基本上我们只需要关注这样几个主要步骤:

    安装CVS
    安装GCC
    sudo apt-get build-dep emacs21 (注:这是一个取巧的办法,通过build-dep尽可能的获取依赖的包)
    ./configure
    make install
    观察错误提示,查阅网上资料,安装缺少的包,重复上一步骤以至成功……
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2010-5-25 17:54:09 | 显示全部楼层
    Emacs 与文本编辑

    打开/新建文件
    打开 Emacs 后,我们做的第一件事,往往是打开一个(新)文件进行操作。在Emacs中,打开文件的快捷键是C-x f。需要注意的是,Emacs并不像普通的文本编辑器那样,区分打开现有文件和新建文件,而是依据这样的规则:

    打开文件时,实际上是在Emacs中打开一个同名的缓冲区(buffer)。
    如果硬盘上存在这个文件,就把其内容读入缓冲区。
    保存时,如果该文件不存在,就新建一个,否则覆盖。
    前面我们提到了缓冲区。这是一种重要的概念,不过暂时我们可以把它视为Emacs中管理的一块数据内容。通常它会对应可见的文本编辑区。实际上,我们可以直接新建一个不对应任何文件的缓冲区,后面我们会讨论到。


    关闭缓冲区
    当然,直接把Emacs关掉,你就关掉了所有的缓冲区。不过,我们通常需要的是关掉当前的缓冲区。它的快捷键是 C-x k。需要注意的是,如果缓中区有未保存的数据,会提示你,注意看提示:)。


    保存文件
    保存文件的快捷键是 C-x s。如果需要另存到一个指定的文件,使用C-x w。


    文本编辑的基本操作
    会有一些教材告诉你一些很神奇的快捷键,比如C-p是光标上移什么的。它们为Emacs提供了最大可能的兼容性。即使一些紧凑的,只有82键的键盘上,熟练用户也可以使用自如。如果你在这样的环境下工作,不妨学习一下这类快捷键。

    然而,实话说,这些快捷键我从来没有背下来过。对于我这样使用101键盘的用户,就直接使用方向键、翻页键这样的标准键来移动光标好了。删除之类的也一样。

    然而还是有几个有用的快捷键值得记忆一下:

    C-k 是删除光标向右直至行尾的内容,我惊讶的发现这个操作居然比我想象的常用的多。
    C-del 是向右删除至单词末尾,对于中文,它是删除子句。
    C-s 会进入搜索模式,后面我们会讨论一下搜索相关的操作。
    所有被删除的内容会进入一个称为删除环的地方,按C-y就可以把它粘贴到光标所在的位置,如果想要取再前一次的删除数据,就在C-y之后(不要做其它操作!)继续按M-y,重复按M-y可以遍历整个删除环。
    复制是 M-w,剪切是C-w,粘贴是C-y,切记!
    C加左或右,可以整单词(或中文子句)跳转,Emacs有一整套完整的文本跳转快捷键,我也只记住了这么一个。
    C-t 交换光标所在字符及其前一个字符的位置。说真的,我对这个快捷键很怨念,这得多么大的手才能一手按住这两个键啊……实事证明,两个字符写反了,是非常常见的事情,这样功能非常实用,生生就被这个组合快捷键给废了……
    对于程序员,另有几个快捷键非常值得一记:

    TAB,在编码使用的各种程序语言mode中,通常tab都是按设定的缩进格式对齐当前行。
    M-/,代码自动完成。黑夜的自动完成并不算强,只是搜索当前已经出现过的子句,但是非常实用。
    C-M-\,对当前选区重排,这个功能也经常会用到。
    特别提一下M-x,这个组合是打开emacs最下面的mini-buffer。然后你可以在里面输入一行命令。通常这个命令就是一个emacs函数。一般写做M-x command,意思就是按下Alt-x,然后输入command,回车。


    文本块的选取
    通常我们在文本编辑器中都可以按住shift移动光标来选取文本,但是在emacs中不行。emacs使用一个称为“锚点”的概念。当你按下M-@时,就设定了一个锚点,光标和锚点之间,即为选取区域。只要不点击鼠标,不重设锚点,这个选取区就会一直随你的光标而变。

    矩形剪切是C-x r k,矩形粘贴是C-x r y。矩形复制还没有找到:)。


    常见编程语言支持
    基本上你常用的编程语言,都已经有了内置的mode支持。你需要的只是M-x 语言名-mode。需要注意的是,shell脚本的编辑mode称为sh-mode。而perl常用的不是内置的perl-mode,是随perl源码发布的cperl-mode。

    如果你像我一样有时候会用一些比较罕见的编程语言,可以在互联网上搜索“Emacs 语言 mode”(请将语言换为你想要emacs支持的语言),一般都能找到。如果你是debian/ubuntu用户,请先在软件源中搜索。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表