Emacs中HTML模式下的选项卡

时间:2009-02-10 14:24:57

标签: emacs

我是一个人。除非我正在处理已经使用空格的项目,否则我会使用制表符。我主要做php和html工作。我已经在php中运行良好。但我无法弄清楚如何让html模式使用制表符而不是两个空格。

这是我到目前为止所做的:

(setq c-default-style "python")
(setq-default c-basic-offset 4
              tab-width 4
              indent-tabs-mode t)

我可以设置什么以便html模式使用标签?

2 个答案:

答案 0 :(得分:27)

(add-hook 'html-mode-hook
          (lambda()
            (setq sgml-basic-offset 4)
            (setq indent-tabs-mode t)))

这是有效的,因为当indent-tabs-modet时,Emacs的默认缩进逻辑会尽可能地使用制表符替换空格,同时仍保留缩进的正确列偏移量。因此,例如,如果您的代码应该每个缩进级别偏移四个字符(即sgml-basic-offset4,如上所述),您的代码应该缩进两个级别深度,并且每个列有四个列缩进级别,然后Emacs计算如果它用两个制表符和零空格缩进,那将导致正确的列偏移。

但是,这也意味着,如果您与tab-width混淆,上述内容将无法正常工作。例如,如果将其设置为8并且深度缩进一级,则Emacs会计算即使它只插入一个选项卡,视觉列偏移量(8)也将大于所需的偏移量(4)。所以它会插入四个空格。尝试将sgml-basic-offset设置为与tab-width相同的内容。

答案 1 :(得分:2)

实际上,默认情况下,indent-tabs-mode应该是t。

尝试M-i,只是为了百灵鸟。那应该插入制表符。它不是一个伟大的解决方案,但它可能会起作用。

另外,你是如何测试空间与制表符的?穿过它?或删除它?你可能会有'向后删除 - 字符 - 解密'来养它的头。