我多年没有使用Emacs了,尝试了一个相当新的(Linux上的23.4.1)我注意到我记得的混合标签样式似乎不再是默认的缩进。它曾经有4个空格作为第一个标签级别,然后是一个标签作为下一个标签级别,然后是一个标签加上四个空格等等。我正在编辑.c文件。
Emacs是否仍默认执行此操作 或者此类默认设置已成为过去,现在使用Emacs对于使用硬标签或软标签的人来说更容易混合标签,在某些情况下使用2空格标签,在其他情况下使用4空格?
更新2:实际上它并没有完全按照2个空格的软标签进行操作,而是一旦我达到8个空格的幻数,那么它就像以前一样粘在标签上。所以没有大的变化,这种混合制表业务显然仍然完全有效,就像@legoscia所说的那样!
更新:我现在在三个系统上尝试了这个 - 在Windows 7上的Emacs v25.x,在Ubuntu 12.x上的v24.x和在Xubuntu 15.x上的v23.x,它们都在做2个空间当我处于“c-mode”时,软键盘。我的问题是关于默认值以及它们在最后一次让我们说5年后的变化。
答案 0 :(得分:2)
这仍然是Emacs默认做的事情:每个缩进级别是4个空格,标签被认为是8个空格宽,而Emacs使用最少量的制表符和空格来构成每行的缩进
这受以下变量的影响:
indent-tabs-mode
:默认为t
。如果是nil
,则Emacs仅使用空格缩进到所需的深度。tab-width
:默认为8.这会影响Emacs认为标签的宽度。c-basic-offset
等。这确定了C文件中每个级别的缩进步骤(也使用基于cc-mode
的模式的C ++,Java和其他语言)。通常,您希望键入C-c .
来为特定缩进样式使用一组设置。通常,您希望为特定文件或某个项目单独设置这些变量。要为单个文件设置它们,您可以在set "file variables"中添加魔术评论。要为目录及其子目录中的每个文件设置变量,请将.dir-locals.el
文件放在项目的根目录中,并指定per-directory local variables。
Emacs没有直接支持的一件事是使用专门用于缩进的标签的概念。你可以通过将c-basic-offset
(或其他语言的相应变量)和tab-width
设置为相同的值来模拟这一点,但Smart Tabs可能更好地为您服务,正如Carsten在评论中所建议的那样