2

我想让 emacs 使用真正的制表符对每种语言进行缩进,并希望制表符的宽度约为 4 个空格(但要成为真正的制表符,就像在 vim 中一样)。我尝试使用 .emacs :

(setq tab-width 4)
(setq-default indent-tabs-mode t)

什么都没有发生:emacs 在 C/C++ 中继续缩进 2 个空格,在 Python 中缩进 8 个制表符!

4

2 回答 2

3

c-mode覆盖了相当多的 Emacs 默认行为,包括缩进。您可以在这里阅读更多内容:http ://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#Indentation-Engine-Basics 。这意味着您可能希望设置c-syntactic-indentationnil以释放所有缩进的好处c-mode(无论其他 Emacs 设置如何,它都可以插入任意数量的空格)。

也许,您的另一种方法可能是c-mode专门修补以按照您的意愿行事。在这种情况下:http ://www.emacswiki.org/emacs/IndentingC#toc3应该会有所帮助。

PS。我几乎不用 C 语言编写,所以我不知道没有默认行为会有多少好/坏。我很高兴总是使用空格,而不是制表符。

于 2012-12-16T09:25:36.777 回答
0

的值tab-width不会改变编程语言模式用于缩进代码的列数量。该值仅表示转换为一个制表符需要多少个空格字符,以及如何显示制表符。

列中的缩进偏移量是按语言设置的。例如,对于 C,设置c-basic-offset为 4。对于 Python,设置python-indent-offset. 不过,默认情况下它已经是 4 了。

除此之外,您可能需要替换(setq tab-width 4)(setq-default tab-width 4). 这也是一个缓冲区局部变量。

于 2012-12-17T03:45:09.910 回答