我是一个人。除非我正在处理已经使用空格的项目,否则我会使用制表符。我主要做php和html工作。我已经在php中运行良好。但我无法弄清楚如何让html模式使用制表符而不是两个空格。
这是我到目前为止所做的:
(setq c-default-style "python")
(setq-default c-basic-offset 4
tab-width 4
indent-tabs-mode t)
我可以设置什么以便html模式使用标签?
答案 0 :(得分:27)
(add-hook 'html-mode-hook
(lambda()
(setq sgml-basic-offset 4)
(setq indent-tabs-mode t)))
这是有效的,因为当indent-tabs-mode
为t
时,Emacs的默认缩进逻辑会尽可能地使用制表符替换空格,同时仍保留缩进的正确列偏移量。因此,例如,如果您的代码应该每个缩进级别偏移四个字符(即sgml-basic-offset
是4
,如上所述),您的代码应该缩进两个级别深度,并且每个列有四个列缩进级别,然后Emacs计算如果它用两个制表符和零空格缩进,那将导致正确的列偏移。
但是,这也意味着,如果您与tab-width
混淆,上述内容将无法正常工作。例如,如果将其设置为8
并且深度缩进一级,则Emacs会计算即使它只插入一个选项卡,视觉列偏移量(8)也将大于所需的偏移量(4)。所以它会插入四个空格。尝试将sgml-basic-offset
设置为与tab-width
相同的内容。
答案 1 :(得分:2)
实际上,默认情况下,indent-tabs-mode应该是t。
尝试M-i,只是为了百灵鸟。那应该插入制表符。它不是一个伟大的解决方案,但它可能会起作用。
另外,你是如何测试空间与制表符的?穿过它?或删除它?你可能会有'向后删除 - 字符 - 解密'来养它的头。