我正在嘗試診斷此問題。 TAB創建4個空格,而不是像我想要的那樣使用4個標籤。但我不認爲這應該是因爲C-h v indent-tabs-mode
上的緩衝區有問題說它設置爲t
。當我檢查我的鍵盤綁定時,TAB設置爲c-indent-line-or-region
。此功能是否會忽略我的標籤模式?爲什麼我的Emacs會使用空格而不是製表符?
回答
Emacs中的選項卡和縮進比大多數人預期的要複雜得多。我強烈建議花一些時間閱讀它 - 從長遠來看,幾乎肯定會爲您節省一些困惑。
下頁在Emacs的維基組最相關的討論一起: http://www.emacswiki.org/emacs/CategoryIndentation
有不少在那裏,但它是值得翻翻。
一個或其他的TabsAreEvil和SmartTabs配置很可能會吸引你,順便說一句,這取決於你對這個問題的個人意見!
請確保您閱讀了tab-stop-list變量上的頁面。它隱藏在鏈接列表底部附近,但在沒有自動縮進規則的情況下理解制表符的行爲以及諸如「tabify」之類的事情至關重要。
標尺模式在這裏也很有用。我使用文本模式自動啓用它:
;; Use ruler in text-mode
(add-hook 'text-mode-hook
(function (lambda()
(setq ruler-mode-show-tab-stops t)
(ruler-mode 1))))
檢查tab-width
變量。如果它是8(默認值),那麼Emacs當然必須插入四個空格,因爲選項卡會「太多」。
它是8.我剛纔改爲4,但問題仍然存在。 – 2010-05-21 21:01:21
檢查文件是否爲Emacs "File Local Variables"。這些特殊格式的行可以在加載該文件時覆蓋您的設置。
這裏是從一個位的Ruby代碼的底部,迫使縮進到2位的例子,和製表符轉換爲空格:
# Local Variables:
# tab-width: 2
# ruby-indent-level: 2
# indent-tabs-mode: nil
# End:
我想出問題。畢竟它是插入一個製表符。事實證明,我認爲這不是因爲當我擊退退格鍵時,鍵被綁定到c-electric-backspace
,它看起來變量c-backspace-function
被設置爲backward-delete-char-untabify
,其中IMO擊敗了製表符的目的。
您可能會發現x-stretch-cursor變量和空白模式對於可視化標識選項卡很有用。後者在默認情況下可能非常花哨,但它可以合理地自定義,因此您可能會發現一個令人滿意的配置。 – phils 2010-05-25 09:57:58
+1。如果我早些時候看到了這個答案,我將會拯救我一個小時的生命。 – 2010-07-19 21:06:17
一定要看看文件的第一行。如果您看到類似 // - - tab-width:4;模式:C++; c-basic-offset:4; indent-tabs-mode:nil - - 此行將覆蓋任何全局或模式設置。
- 1. emacs arglist-cont-nonempty使用4個空格,而不是一個製表符
- 2. 如何讓js2-mode在Emacs中使用空格而不是製表符?
- 3. VIM - 迫使>>使用空格,而不是製表符
- 4. 使用製表符而不是XML中的空格縮進
- 5. 更改目錄時,我會放置什麼而不是空格?
- 6. IXMLDocument.SaveToFile()使用製表符而不是空格
- 7. 如何在Aptana Studio中使用製表符而不是空格?
- 8. 爲什麼我會得到一個空白頁而不是Joomla?
- 9. 爲什麼插入0而不是空格到我的數據庫使用PHP?
- 10. Emacs:插入標籤而不是空格
- 11. 使用4個空格而不是2個空格的原因是什麼?
- 12. 「縮進中製表符和空格的使用不一致」是什麼意思?
- 13. 爲什麼我不能在輸入中使用空格字符?
- 14. 爲什麼我得到空間而不是換行符?
- 15. 如何使用製表符替代emacs ruby-mode的空格?
- 16. 爲什麼IntelliJ不使用製表符?
- 17. 爲什麼我會使用wrappedPointCut而不是數據?
- 18. 爲什麼我會使用check()而不是Match.test()?
- 19. 爲什麼我會使用Apache ServiceMix而不是ActiveMQ
- 20. 爲什麼Android Studio會告訴我使用getSupportActionBar()而不是getActionBar()?
- 21. 爲什麼我會使用白色屏幕而不是地圖?
- 22. 爲什麼我會使用MockWebServer而不是WireMock?
- 23. 如何使HtmlTextWriter對象的縮進使用空格而不是製表符?
- 24. 爲什麼我的列表會返回字符而不是項目?
- 25. 在PHP_CodeSniffer中強制使用空格縮進而不是製表符?
- 26. 爲什麼java不打破空格不是空白字符?
- 27. 爲什麼列表中的表格是defs而不是vals?
- 28. 爲什麼uniq -c用空格而不是\ t輸出?
- 29. 使用空間而不是控制來避免emacs小指?
- 30. 爲什麼whitespaceAndNewlineCharacterSet不會刪除空格?
請注意,許多人(包括我自己)認爲標籤是邪惡的:http://www.emacswiki.org/emacs/TabsAreEvil - 您已將標籤寬度從默認的8改爲4.如果我要看在你的代碼中,縮進是錯誤的。此外,您通常希望對齊部分代碼,即函數參數 - 單獨使用選項卡將無法實現此功能,並且最終會混合使用製表符和空格。 – slu 2010-05-22 12:44:11