2011-07-13 53 views
10

我正在和一羣使用vim的Python程序員合作,他們讓Python使用TAB進行縮進。我使用Python模式將Emacs轉換爲4個空格(像它應該,但沒關係)。由於我不想引起麻煩,我想添加一些東西到我的.emacs文件(或其他),使用真正的TABS縮進而不是將它們轉換爲空格。怎麼樣?如何讓Emacs Python模式生成縮進的TAB?

對不起,如果這是在別處回答:我沒有找到它。

+4

別擔心,有地獄的一個特殊的圈子對於這類人也是如此。 – Evpok

+0

不要和那些傢伙一起工作! ;-)) –

+1

既然是「標籤」的縮寫? – BoltClock

回答

10

您可以在~/.emacspython-mode-hook定義特定Python的設置。爲了使用縮進標籤,你可以使用:

(add-hook 'python-mode-hook 
    (lambda() (setq indent-tabs-mode t))) 

由於python.el縮進只有4列,默認情況下,上面會使用標籤時的縮進後跟其他縮進位8和選項卡的多。

如果你需要使用一個選項卡每個縮進級別,你還需要設置python-indent至8。你可以設置tab-width您要查看的標籤顯示爲任何寬度。

(add-hook 'python-mode-hook 
    (lambda() 
    (setq indent-tabs-mode t) 
    (setq python-indent 8) 
    (setq tab-width 4))) 
+0

我試過把它放在不同的地方,不能使它工作。我的emacs安裝似乎使用了我對黑客入侵的「python.el.gz」。我應該得到python-mode.el嗎? –

+0

@Aaron:你可能確實得到它的工作,但自從python。el默認只在每個級別縮進4列,但您還沒有看到使用製表符。我用更多的解釋更新了答案。 – jamessan

1

可能需要爲此在python模式:

(setq indent-tabs-mode t) 
0

由於評論者後正確地說,使用標籤進行縮進是一個壞主意,並使用非標準的標籤寬度更是雪上加霜。但是,如果您想進行協作,有時您別無選擇。

根據您的同事們究竟如何配置VIM,你可能需要接通indent-tabs-mode並設置tab-width至4

一個方便的方式做到這一點,是不會弄亂你的其他工作,就是用file local variables。在每個有問題的文件的結尾,把這個:

# Local Variables: 
# indent-tabs-mode: 1 
# tab-width: 4 
# End: 

(你必須告訴Emacs的是indent-tabs-mode是一個安全的局部變量)

+1

個人,我不喜歡文件局部變量,特別是如果你正在合作。想象一下,如果每個用戶使用不同的編輯器,那麼這個文件看起來會是什麼樣子,並且他們都認爲適合爲他們的個人編輯器添加不同的blurb。 BLECH。 – jtahlborn

+0

BUT格式設置是正確的文件!你投票打破風格? – gavenkoa