paredit.vim将内部列表移出封闭列表

时间:2013-11-27 09:22:42

标签: vim paredit

我正在使用Vim来编辑Clojure代码,我正在给paredit一个机会,因为Emacsen一旦谈到它在Emacs中有多好,一旦你掌握了它,就会给它带来好处。

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

(wrapper-func (fn [] whatever))

我想改变它,以便我留下的只是内在的lambda:

(fn [] whatever)

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

((fn [] whatever))

但是,似乎不可能移除外部或内部的parens。

3 个答案:

答案 0 :(得分: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

了解详情

答案 1 :(得分:0)

以下是如何做到没有 paredit.vim:

将光标放在此处:

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

然后输入:

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

v2a(:选择外部父级,

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

注1:v2a(可以替换为hva(vha(,以便将光标移出内部父级:a(然后选择外部父级。

注意2:如果您不想添加标记(),请使用i(代替a(

注意3:如果y%d%替换,则v2a(可以被va(替换,因为外部父级成为当前父级。它是一个小键盘。但是如果你的系统崩溃了输入此内容可能会丢失内部父母的内容。

答案 2 :(得分:0)

或者我们可以通过将光标保持在以下位置来实现:

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

执行以下击键

d{(%x