我想让emacs使用真正的标签来缩进每种语言,并希望标签的宽度大约为4个空格(但要像vim一样是真正的标签)。 我试着.emacs:
(setq tab-width 4)
(setq-default indent-tabs-mode t)
没有任何反应:emacs继续在C / C ++中缩进2个空格,并在Python中缩进8个标签!
答案 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)
。这也是一个缓冲区局部变量。