在文本周围包裹括号?

时间:2012-01-06 23:33:57

标签: paredit

使用paredit时如何在文本周围包裹大括号?我曾多次使用过paredit然而我感到沮丧,因为它阻止了我做我想做的事。

示例:

(foo
    (bar 1 2 3)
    baz 1 2 3)

Opps,baz 1 2 3应该这样包裹:

(foo
    (bar 1 2 3)
    (baz 1 2 3))

但是,不......:

(foo
    (bar 1 2 3)
    () baz 1 2 3)

2 个答案:

答案 0 :(得分:4)

你没有提到你正在做什么编辑。无论如何,如果你只是输入一个开头,那么它的结束对也会立即添加。为了将表达式包装在括号中,您需要使用'wrap'函数。

在emacs中,这可以是paredit-wrap-roundM-(,请找到emacs paredit cheatsheet here

在使用slimv的vim中,这是,W(如果先选择一个表达式,那么整个表达式将被包装)。

如果你碰巧包含了错误数量的元素,那么你可以将它们移入/移出s-expression(参见emac的'slurp'和'barf'),或者你可以移动括号({{1} }或,< for vim)。

答案 1 :(得分:2)

键入C-u (而不是(,使其从点开始包围所有内容,或M-3 ((或M-3 M-()以使其环绕下一个三个S -expressions。

或者,您可以标记要加括号的区域,然后键入(

另一种方法是键入(,然后点击M-)按照您的要求逐项填写。