我很難與vim 智能縮進vim功能,同時編輯Python代碼。一般來說,我喜歡:set nocompatible
vim選項,連同:set autoindent
(和/或:set smartindent
)。除了一個非常煩人的行爲,一切都很好。假設你編碼了一些東西,然後想插入一個你從其他地方抓取的Python代碼片段。 python代碼片段可以包含註釋,例如vim正確縮進python片段
# comment1
a=1
# comment2
b=1
在vim中,當你進入插入模式時,例如,打字Ø,做你的代碼粘貼,Vim會縮進你的代碼的太太多的工作,而不是你的片斷,你會得到
# comment1
# a=1
# # comment2
# b=1
所以它插入後補充意見(井號)首先評論並保留其餘的代碼片段。現在想象一下,您有很長的代碼片段,具有不同的身份,並且您可以對您的粘貼動作看起來像是多麼醜陋,看起來像(代碼將被不正確地縮進和註釋)。
有什麼方法可以解決它嗎?
我解決這個問題的唯一方法是將vim兼容模式與noautoindent
選項一起設置,然後粘貼代碼片段。這樣做會將其插入正確(按原樣)。但切換模式(nocompatible
vs compatible
)太多(稱我懶,但它應該是一種在nocompatible
模式下正確插入帶有註釋的片段的方法)。設置noautoindent
在nocompatilbe
模式下沒有任何區別(問題依然存在),所以它與兼容/不兼容模式有關。
雖然'set paste'是解決此問題的正確方法,但我覺得我應該指出,由於'formatoptions'設置的'r'標誌會插入註釋字符,以防萬一有人在此嘗試一般情況下禁用該行爲。 – 2012-08-10 18:07:47