2012-08-10 82 views
2

我很難與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模式下正確插入帶有註釋的片段的方法)。設置noautoindentnocompatilbe模式下沒有任何區別(問題依然存在),所以它與兼容/不兼容模式有關。

+0

雖然'set paste'是解決此問題的正確方法,但我覺得我應該指出,由於'formatoptions'設置的'r'標誌會插入註釋字符,以防萬一有人在此嘗試一般情況下禁用該行爲。 – 2012-08-10 18:07:47

回答

3

你想要的選項是

set paste 

這將粘貼你想要什麼作爲原料。

+0

在粘貼之前鍵入':set paste!'來切換選項是很好的,粘貼後您可以回到命令行並且'立即切換到另一個'。 – pb2q 2012-08-10 16:46:06

+0

這正是我所期待的。感謝您的提示。 – Valentin 2012-08-10 17:16:53