2016-03-07 87 views
1

我使用vim编辑的Clojure与paredit.vim和我注意到我不能想象是预期的行为:做一个简单的换行符时,右括号总是被推到了下一行,例如:Vim和Paredit - 为什么换行符会将右括号括在下一行?

(if true 
    "hello" 
) 

什么,而不是我所期望的:

(if true 
    "hello") 

一个撷取画面视频:http://d.pr/v/14S8F/4Z8gkHOA

我已禁用比vundle以外的所有其他插件和paredit.vim要安全,并且正在发生。我正在使用vim 7.4macvim 7.4,结果相同。

我是否误认为或者这是paredit的预期行为?

编辑

虽然选择的答案确实设置我期待的功能,从@amalloy评论确实回答,这是paredit的预期功能,并在:help paredit它并澄清这一点:

如果g:paredit_electric_return处于打开状态,那么它也会在适当时重新收集电力回报。

,并进一步:

如果非零,则 “电动回报” 功能被启用。这意味着当在插入模式下关闭paren之前按下 时,paredit实际上会在 之间插入两条换行符以创建空行。额外的换行消耗在 按下下一个关闭的paren。此功能允许在下一行(空行)中输入的 子表单的行编辑。 换言之,“编辑时打开”括号表达式,')' “关闭”它们。 请注意,如果Slimv 选项| g:slimv_repl_simple_eval |是非零的。在这种情况下,使用 将命令行发送到swank服务器进行评估。

+1

您是否尝试过用比其他形式的'if'?例如,像“foo”这样的一些制造废话。 paredit.vim可能预测你的'if'将有两个分支,因此为你分配两行。 – amalloy

+0

啊,这是一个合理的可能性,但它仍然在做,即使只用'foo':https://d.pr/v/1lO3V/4ycJhsVW – waffl

回答

3

禁用electric return

:let g:paredit_electric_return=0 
+0

谢谢,确切的问题 – waffl

+2

其实你确定你想要禁用此功能?如果像emacs上的paredit一样,按'''将paren弹回到正确的位置,那么在结束paren之前的额外空间可能只是一个编辑便利,当您完成它时它会自行修复。 – amalloy

+0

啊我现在看到,也很有趣。这也如前所述。我想我会看到它的感觉,因为我花了更多的时间。对于任何有兴趣的人,这里是另一个视频:http:// d。pr/v/3KM/2nFs3NU7 但是,如上所述,这是我最初期望的行为 – waffl