make emacs使用真正的制表符来缩进每种语言

时间:2012-12-15 23:37:25

标签: emacs

我想让emacs使用真正的标签来缩进每种语言,并希望标签的宽度大约为4个空格(但要像vim一样是真正的标签)。 我试着.emacs:

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

没有任何反应:emacs继续在C / C ++中缩进2个空格,并在Python中缩进8个标签!

2 个答案:

答案 0 :(得分:3)

c-mode会覆盖相当多的Emacs默认行为,包括缩进。您可以在此处阅读更多内容:http://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#Indentation-Engine-Basics。 这意味着您可能希望将c-syntactic-indentation设置为nil以消除c-mode缩进的所有好处(可以插入任意数量的空格而不管其他Emacs设置)。

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

PS。我几乎不用C写,所以我不知道没有多少好/坏的默认行为。我很高兴总是使用空格,而不是标签。

答案 1 :(得分:0)

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

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

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