2013-11-27 18 views
0

我正在使用Vim编辑Clojure代码,并且我正在给Paredit一个提示,因为Emacsen一般会谈论它在Emacs中的表现如何,一旦你掌握了它的内容。paredit.vim将内部列表从列表中移出

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

(wrapper-func (fn [] whatever)) 

而且我想改变它,这样所有我留下的是内心的λ:

(fn [] whatever) 

使用paredit做正确的方法是什么?我一直感到沮丧,并回到手工平衡的对手。我通常可以得到尽可能删除“包装-FUNC”元素的列表,整理:

((fn [] whatever)) 

但后来这似乎是不可能去除外侧或内侧的括号。

回答

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

+0

谢谢。我会尝试使用'我',但我把光标放在了错误的地方。完成我的脑部疾病! – d11wtq

0

这里是如何做到这一点没有 paredit.vim:

将光标放在这里:

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

然后键入:

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

v2a(:选择外部父母,

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

注1:v2a(可以用hva(vha(代替,以使光标离开内部父代:a(然后选择外部父代。注2:如果您不想包含标志(),请使用i(而不是a(

注3:如果y%d%更换,V2A(可通过va(更换,因为外父成为当前父这是一个keystrole少,但如果在打字时你的系统崩溃,你可能会失去内在的父母的内容。

0

或者干脆我们可以通过保持光标在做到这一点:

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

执行以下击键

d{(%x