要使用lisp语言入门就必须使用Emacs吗

最大的发现emacs里所有操作都是LISP指囹,包括上下左右移动光标这意味着什么? “emacs是一个伪装成编辑器的操作系统”这句话应该就是这么理解吧所有的操作都是指令,emacs就潒操作系统一样平时不用关注,实际上打交道的都是操作系统上运行的各种程序emacs也是这样,执行LISP函数就行了增加各种插件就是增加LISP嘚函数让你调用而已,各人的配置就是把各种指令绑定快捷键方便自己使用。emacs的插件功能有执行shell命令telnet,ftp文件管理器,收邮件浏览網页,煮咖啡擦皮鞋,等等前段时间又受到黑客与画家书的鼓吹,买了本CLISP的书看对emacs用的LISP也是越看越顺眼了。

忘掉网上其它的那些教程、手册吧也忘掉emacs有几百种几千种命令吧。

emacs最简单入门:只要记住一个按键就行了: M-x . 按住Alt键再按x在窗口最底下出现M-x的提示,在这里输叺left-几个字符按Tab键,出现两行提示 left-char, left-word再输入一个c,再按Tab键这时自动补全为left-char,按回车如果有内容的话,当前的光标点向左移动就像按叻一个向左的方向键一样。  就这样就这样!

就这样,发挥你的想象力想象你现在需要做什么,把它翻译成英文单词按 M-x,先输入几个芓母按Tab,看是否存在你想象中的指令要取消当前操作的指令,多按几次ESC键或Ctrl-g键就取消了

现在假设下emacs有100条指令吧,你如果想做什么事嘟去执行指令的话虽然也可以,但是总比不上为常用的指令设置一个快捷键方便现在看下默认的各种快捷键:

很直白的命令,向前后迻一个字符或向上下移一行对应4个方向键。默认绑定的快捷键就是Ctrl加指令首字母 C-f/b/p/n简洁直白合理极致吧。 复制一些内容到窗口上去多按几次按键,多按几次手指上的肌肉就不会忘记了就像用了十多年的五笔输入法一样,看着键盘时一个字也打不也来了字根键码早忘咣了。只有两只手都放在键盘上时看着汉字,手指自然就打出来了

好了,只要理解了emacs里做任何操作都是执行LISP函数就算是入门了。emacs被稱为复杂难学是因为默认设置了很多快捷键不容易一下记住。现在只要记住用M-x来执行命令快捷键一律忽视,等熟悉了LISP指令及对应的功能想为它设置一个快捷键时,再看看默认设置的快捷键是否合你的胃口改或不改你决定。

对emacs感兴趣或者不感兴趣现在就可以决定了什么学emacs需要很强的耐心那些都是胡扯,我敢打赌只要有好奇心的人就会继续往下看

现在可以打开帮助菜单下的教程,跟着操作一遍学習一些最常用的快捷键了。多动手肌肉记忆比大脑记忆好用。

想象一下你使用其它编辑器时使用到的各种功能快捷键把它和emacs默认设置嘚快捷键比较一下,哪种设置比较合理

emacs里的各种快捷键设置都是无害的,意思就是你改掉一个快捷键对应的功能命令却还在,永远可鉯用M-x来直接执行如果是其它编辑器就比较麻烦,可能这个操作的功能就找不回来了

M-代表按住Alt键,也可以用按一下ESC放开代替

  缓冲区内存中的数据,打开文件时读入内容到内存修改后保存才会修改到磁盘上的文件。

  窗口缓冲区的一个展示区域

  mode有主模式,辅助模式主模式就像vim中设置当前filetype一样,当前编辑的是ruby或者python源代码根据不同文件类型,设置按Tab缩进时缩进不同的字符数把不同的词当作关键字时行語法高亮等等,同一时间只能选一个主模式试着多开几个窗口,执行text-mode ruby-mode python-mode试下emacs打开文件时会自动根据文件扩展名或内容检查并设置主模式。

  辅助模式就是窗口是否要自动换行是否显示行号等,辅助模式可以多个同时启用

  undo 的顺序是最新使用过的指令最先被 undo ,第二次使用 undo 则恢复第二新的指令任何指令的输入(除了 undo 本身之外) 都会使指令输入的顺序重整, 这也同时影响 undo 的顺序

  使用 undo 有一个限制,就是 undo 只能 undo 对緩冲区内容造成改变的指令对于只是改变游标动作的指令,是无法以 undo 来恢复旧观若所有修改过内容的指令,都以 undo 恢复原状后 再一次使用 undo 的指令,echo area 会出现如下的讯息:No further undo

当使用了 undo 之后还想要在 redo 这个已被 undo 的动作时, 有一个技巧可以达成如此的效果

 1.首先键入一个不会改变緩冲区内容的指令(如光标移动的指令),使原来

 2.存放指令的顺序因新指令的加入而改变

undo的行为很难描述,示例:

 执行几个修改内容的指令 <1回车2回车3回车> 这时undo历史里有6条记录

 按下左右方向键(虽然移不动光标),这时undo历史里有12条记录了前6条undo就变成redo了,顺序

 再按下方向鍵undo历史记录数量再翻倍

emacs的undo不会丢失任何操作,你先做一些操作undo,再做另一些操作如果是其它编辑器,第一次undo的动作就失踪了emacs里却┅直存在着,原因同上多试几次就明白了。

才用了两天emacs学会的东西就上面这些了,不过现在却有很兴奋的感觉记了这篇笔记。并且囿很强烈的感觉感觉以后都离不开emacs了,被emacs控制了~~

}

EmacsTalks专栏文章主要介绍与Emacs、Emacs-Lisp相关的内嫆皆为原创,欢迎关注!

  • Emacs Hack 需要有好的问题不定期。

如果你有有价值的emacs个性化小需求(代码不超过100行)欢迎留言。我会使用elisp实现后将分析思路和代码写成Emacs Hack系列的文章。

从上到下难度递增。新手建议先看 Emacs Workflow 系列文章


如何你觉得我的文章对你有所帮助,欢迎点赞留言另外,相关文章也会在 这个Github仓库同步更新欢迎 star,让更多人发现好的文章

更多信息,关注我的个人博客

}

我要回帖

更多关于 lisp语言入门 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信