0

我正在使用 Vim 编辑 Clojure 代码,并且我正在尝试使用 paredit,因为 Emacsen 通常会谈论它在 Emacs 中有多好,一旦你掌握了它。

如果我有一个将 lambda 传递给函数的表达式:

(wrapper-func (fn [] whatever))

我想改变它,这样我剩下的就是内部 lambda:

(fn [] whatever)

使用 paredit 的正确方法是什么?我一直感到沮丧,并回到手动平衡括号。我通常可以删除列表中的 'wrapper-func' 元素,最后是:

((fn [] whatever))

但是似乎不可能删除外部或内部括号。

4

3 回答 3

1

在 paredit 的帮助下:

<Leader>I      Raise the current symbol, i.e. replace the current list with
               the current symbol by deleting everything else (except the
               symbol) in the list, including the eclosing pair of parens.
               For example pressing <Leader>I at position marked with |:
                   (aaa (b|bb ccc) ddd)  --->    (aaa |bbb ddd)

所以,把你的光标放在这里

(wrapper-func (fn [] whatever))
              ^

并按<Leader>I

查看更多信息:help paredit

于 2013-11-27T09:30:20.760 回答
0

以下是不使用paredit.vim 的方法:

将光标放在这里:

(wrapper-func (fn [] whatever))
              ^

然后输入:

y%:将内部父级复制到剪贴板,

v2a(:选择外部父母,

p 用剪贴板替换该外部父级。

注1:v2a(可以替换为hva(vha(使光标脱离内父:a(则选择外父。

注意 2:如果您不想包含符号(),请使用i(代替a(

注意3:如果y%替换为d%,v2a( 可以替换为,va(因为外部父级成为当前父级。它少了一个键。但是如果您在键入时系统崩溃,您可能会丢失内部父级的内容。

于 2013-11-27T09:42:31.810 回答
0

或者简单地说,我们可以通过将光标保持在:

  (wrapper-func (fn [] whatever))
                ^

执行以下击键

d{(%x

于 2016-01-22T09:42:22.967 回答