使用Paredit时,我经常遇到以下情况(管道字符代表光标):
(foo |bar baz)
我想将bar
括在parens中,所以我使用paredit-wrap-around
( M - ()来获取此信息:
(foo (|bar) baz)
当我想把bar放在字符串中时,同样适用,我可以使用 M - " 来获取:
(foo "|bar" baz)
但是,Clojure还为矢量,地图和集合使用方括号[]
和花括号{}
。这些看起来似乎并没有包装好的'命令。所以在这种情况下,例如,将bar放入向量中,我通常使用 [键创建一个新向量:
(foo [|] bar baz)
后跟paredit-forward-slurp-sexp
( C - →),结果是:
(foo [| bar] baz)
我想删除bar
之前插入的空格字符。这可能吗?为什么paredit在从空表达式转换为包含一个项目的表达式时会保留空格char?难道不是第一个添加到S表达式的项目总是被推到开头那个吗?
答案 0 :(得分:4)
Paredit已经有一段时间了paredit-wrap-curly
和paredit-wrap-square
。如果你想使用它们,只需将它们绑定到一个可能发声的键,并拥有它。如果你使用这样一个旧版本的paredit这些函数不存在,你应该升级(但我不认为你是这样,因为slurp命令可以使用它们。)
答案 1 :(得分:1)
paredit的最新开发版本将M-[
绑定到paredit-wrap-square
,它完全符合您的要求。 Emacs已将M-{
绑定到backward-paragraph
,但如果您没有使用它,则可以自定义paredit以隐藏它:
(eval-after-load 'paredit
'(progn
(define-key paredit-mode-map (kbd "M-{") 'paredit-wrap-curly)))
如果您要删除该点周围的所有空间,您可以随时为M-\
输入delete-horizontal-space
。