joe*_*ohn 6 lisp emacs clojure paredit
当使用Paredit时,我经常面对以下内容(管道char代表游标):
(foo |bar baz)
Run Code Online (Sandbox Code Playgroud)
我想bar用parens 括起来,所以我用paredit-wrap-around(M- ()得到这个:
(foo (|bar) baz)
Run Code Online (Sandbox Code Playgroud)
当我想把bar放在一个字符串中时,同样适用,我可以使用M- "得到这个:
(foo "|bar" baz)
Run Code Online (Sandbox Code Playgroud)
但是,Clojure还使用方括号[]和花括号{}来表示矢量,地图和集合.这些似乎没有一个paredit'环绕'命令.所以在这种情况下,例如将bar放入向量中,我通常使用[键来创建一个新向量:
(foo [|] bar baz)
Run Code Online (Sandbox Code Playgroud)
然后是paredit-forward-slurp-sexp(C- →),结果是:
(foo [| bar] baz)
Run Code Online (Sandbox Code Playgroud)
我想删除之前插入的空格字符bar.这可能吗?为什么paredit在从空表达式转换为包含一个项目的表达式时会保留空格char?不应该将第一个添加到S表达式的项目一直推到开头位置吗?
Paredit 在很长一段时间里一直拥有paredit-wrap-curly和paredit-wrap-square。如果您想使用它们,只需将它们绑定到一个听起来可能的键上,然后就可以使用它们了。如果您使用的是旧版本的 paredit 以至于这些函数不存在,您应该升级(但我认为您不需要升级,因为 slurp 命令可以使用它们)。