2016-03-07 90 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