美文网首页Emacs
Emacs Paredit插件

Emacs Paredit插件

作者: Hanze2111 | 来源:发表于2015-02-24 12:38 被阅读2297次

    没有Paredit插件,在Emacs上写lisp代码会痛苦无比。最开始是在王垠的博客上看到了这个插件,当时只是为了配置一个较为舒适的Scheme编程环境。当时王垠大大只教了两个功能,不过仅仅这两个功能就使得我写Scheme代码变得很舒服。而后又在Youtube上看到一个关于Paredit的视频,然后决定深入了解下这个插件,于是便有了这篇文章。其实不是因为视频中展示的功能很炫,而是因为里面有一句特装逼的话。

    "If you think paredit is not for you then you need to become the kind of person that paredit is for."

    顺便Emacs是邪教啊,入教了就出不来了。

    好了不废话了,进入正题。首先在Paredit模式下,你打出的括号引号什么的都是成对出现的,这个是最基本的了。然后比如你打算打一个字符串,那么应该是"a-string"这样的吧。这个没什么问题,但是手滑了忘记了双引号了,哦凑a-string。怎么办,在开头结尾加双引号吧。每次做这个工作我都觉得心好累,感受到了来自全世界的恶意。但Paredit表示这并不是问题,把光标停留在字符串第一个字符前,按下M-",好了这个世界安静了。a-string自动变成了"a-string"。不仅仅只有双引号的,还有lisp中最常见的括号,在一个S表达式开头按下M-(会将这个S表达式放到括号中变成了表。

    分割和连接(split & join)

    一个表分为两个表,一个字符串分割为两个字符串。这些在Paredit中是十分简单的。只需要在要分割的地方按下M-S

    ;;; 例子,将光标放在world前,按下M-S
    (hello world)
    (hello) (world)
    ;;; 字符串的
    "Hello,world"
    "Hello," "world"
    

    连接的我就不写了,快捷键是M-J。还有看到上面代码的注释了吧,我要写注释的时候就按M-;然后注释符自动就打出来了,Paredit就是这么酷。

    吞吐S表达式(Barfage & Slurpage)

    我觉得这简直就是Paredit的精髓,简直太好用了。吞掉右边的S表达式,C-),吐出来C-}。对应的,吞掉左边的S表达式,C-(,吐出来C-{

    (foo bar (baz) quux zot)
    ;;; 把光标放到(baz)里面,先吞右边(C-))后吞左边(C-()
    (foo bar (baz quux) zot)
    (foo (bar baz quux) zot)
    ;;; 吐:把光标放在(bar baz quux)中,先吐左边(C-{)后吐右边(C-})
    (foo bar (baz quux) zot)
    (foo bar (baz) quux zot)
    

    跳出外围块

    这个不太好表达,就写个例子吧。就是下面这个样子的。

    (foo (let ((x 5))
           (sqrt n)) bar)
    ;;; 光标停留在(sqrt n)前面,按下M-r
    (foo (sqrt n) bar)
    
    ;;; 再来一个
    (if (pre)
        (then)
        (otherwise))
    ;;; 在(then)前面按M-r
    (then)
    

    这些我觉得是最常用的,还有很多就不写了,留个官方的手册Paredit Referennce Card。总之Paredit写lisp真的太好用。

    打算长期在简书上写博客了,欢迎关注。Markdown还是挺好用的,虽然照Emacs的org-mode差好多。

    相关文章

      网友评论

      本文标题:Emacs Paredit插件

      本文链接:https://www.haomeiwen.com/subject/iciuxttx.html