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

vim将内部列表移出封闭列表,vim,paredit,Vim,Paredit,我正在使用Vim编辑Clojure代码,我正在尝试paredit,因为一旦掌握了诀窍,Emacsen通常会谈论它在Emacs中有多好 如果我有一个将lambda传递给函数的表达式: (wrapper-func (fn [] whatever)) 我想改变它,这样我只剩下内部lambda: (fn [] whatever) 使用paredit的正确方法是什么?我一直感到沮丧,于是又开始用手平衡双腿。我通常可以删除列表中的“wrapper func”元素,最后是: ((fn [] whateve

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

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

(wrapper-func (fn [] whatever))
我想改变它,这样我只剩下内部lambda:

(fn [] whatever)
使用paredit的正确方法是什么?我一直感到沮丧,于是又开始用手平衡双腿。我通常可以删除列表中的“wrapper func”元素,最后是:

((fn [] whatever))
但是,似乎无法从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)
然后按
I


请参阅
:help paredit

的更多信息,这里介绍了如何在不使用paredit.vim的情况下执行此操作:

将光标放在此处:

(wrapper-func (fn [] whatever))
              ^
然后键入:

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

v2a(
:要选择外部父级

p
用剪贴板替换外部父对象

注1:
v2a(
可替换为
hva(
vha(
)以将光标从内部父级中取出:
a(
正在选择外部父级

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


注3:如果将
y%
替换为
d%
,则v2a(可以替换为
va(
),因为外部父级变为当前父级。只需少敲一次键。但是,如果在键入时系统崩溃,则可能会丢失内部父级的内容。

,或者我们可以通过将光标保持在以下位置来完成此操作:

  (wrapper-func (fn [] whatever))
                ^
执行以下按键笔划


d{(%x

谢谢。我本来想用
I
的,但是我的光标放错了地方。请完成我的工作!
  (wrapper-func (fn [] whatever))
                ^