为什么emacs以不同方式显示标签?

时间:2014-07-26 19:00:11

标签: emacs whitespace highlight indentation

所以我已经听说过emacs的优点,并且最近才开始使用它。请原谅我这是一个愚蠢的问题,但为什么emacs会以不同的方式显示标签?好像它的空间数量增加了一倍,但至少我估计它并没有。这里有一些图片来描述我在谈论的内容:

这就是emacs中的样子:

正如我之前所说的那样,似乎空间的数量增加了一倍。当我将此行添加到.emacs时:

(setq c-basic-offset 4)

并使用Cx h CM- \重新定义代码使其在emacs中看起来正常,但在其他文本编辑器中查看时,辅助缩进与第一个缩进(如2个选项卡现在为1个选项卡)一致,并且再一次,我无法理解为什么。将其更改为

(setq c-basic-offset 8)

使其保存并在其他文本编辑器中正常显示。在这一点上,我真的很困惑。

有人可以解释一下原因吗?感谢。

2 个答案:

答案 0 :(得分:3)

变量tab-width是列中制表符空格之间的距离,默认为8.如果您希望它默认为4,则可以(setq-default tab-width 4)。如果您想要取消所有内容并将标签转换为空格,则可以执行M-: (untabify (point-min) (point-max))

您可能会发现this thread有用,尤其是当您想要添加自己的标签时tab-stop-list上的点。

答案 1 :(得分:1)

您也可以采用健全性,而不是在代码中使用TAB字符。 ; - )

当您点击TAB密钥(以及RETC-j时,阻止插入 TAB字符,具体取决于您的Emacs版本)设置选项的值 indent-tabs-mode nil

要从正在编辑的代码中删除预先存在的TAB字符,请使用命令 untabify

另请参阅Tabs Are EvilUntabify Upon Save

请注意,在Emacs中,您是否使用TAB字符与代码是否缩进的程度无关。例如,无论TAB是否用于某些缩进,选项c-basic-offset都会控制缩进量。

另外请注意,在您完成TAB习惯之后,代码中留下的对代码有意义的任何TAB字符都更容易找到。它们不会丢失在无足轻重的空白TAB的海洋中。

最后,请注意,有多种方法可以突出显示TAB字符。库highlight-chars.el中的命令hc-toggle-highlight-tabs是一种方式。请参阅Show Whitespace