2011-12-14 88 views
2

我正在嘗試學習vim :-)有一些真正的麻煩與自動縮進改變我的Python代碼的含義。有沒有辦法獲得autoindent的好處,而不會遇到像下面那樣的行爲?Vim Python縮進更改代碼語義

我開始一個python的文件:

 
[email protected]:/tmp$ cat pytest.py 
if False: 
    print('Never', 
      'print this line') 

print 'Always print this line.' 

自動縮進與vim pytest.pygg=G:wq

D'哦,我搞砸了我的腳本:

 
[email protected]:/tmp$ cat pytest.py 
if False: 
    print('Never', 
      'print this line') 

    print 'Always print this line.' 

試圖保持這真的是香草:

 
[email protected]:/tmp$ cat ~/.vimrc 
filetype plugin on 
filetype indent on 
autocmd FileType python set sw=4 
autocmd FileType python set ts=4 
autocmd FileType python set sts=4 
autocmd FileType python set textwidth=79 
+2

這就是爲什麼我從不使用自動壓縮器的原因,即使在使用縮進不重要的語言編寫時也是如此。我建議在編寫代碼時保持清潔,避免任何類型的自動操作。 – redShadow 2011-12-14 02:03:55

回答

2

在vim中自動縮進工作只是讓你的tabstop,shiftwidth,softtabstop和expandtab設置與你正在編輯的文件一致的問題。我使用這個插件:

http://freecode.com/projects/vindect

從您正在編輯的Python文件出來工作的這些設置,並確保Vim的行爲正確,即使你碰巧編輯其他人誰提交他們的白色空間,不同的設置來自你。編輯:如果你想做一個完整的python源代碼文件重置(替換gg = G),你需要一個像這樣的Python特定重塑文件:http://svn.python.org/projects/doctools/trunk/utils/reindent.py你可以很容易地變成一個vim命令。

+0

這不是給自己帶來麻煩的autoindent,而是重新執行命令。但這是一個方便的鏈接。 – MikeyB 2011-12-14 14:34:23

4

是的,不要這樣做。

VIM中自動縮進的要點是讓編輯器根據語言格式規則猜測空白應該去的位置。但是:

enter image description here

Python的空白是很重要的,你也知道。正如醫生所說:Don't Do That Then.

+0

不夠公平,@MikeyB。這幾乎是我所懷疑的。 (但是有足夠的軟件包,教程等,我認爲可能最先進的技術水平......) – Bosh 2011-12-14 02:25:50