【问题标题】:Tabs in HTML mode in EmacsEmacs 中 HTML 模式的选项卡
【发布时间】:2016-12-08 01:23:41
【问题描述】:

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

这是我目前所拥有的:

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

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

【问题讨论】:

    标签: emacs


    【解决方案1】:
    (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 相同的值。

    【讨论】:

    • 我是不是做错了什么?该代码对我没有影响。运行 Emacs 22.3.1 顺便说一句。
    • 你使用的是emacs自带的html-mode还是第三方的?
    • 只是 emacs 附带的默认 html 模式。
    • 如果有人感兴趣,请将最后两行中的 4 更改为 2 并将 t 更改为 nil 以创建相反的效果(始终只使用两个空格)。默认情况下,HTML 模式混合使用制表符和空格(为什么?)。
    • 如果这对任何人都不起作用:尝试确保您的 tab-width 变量与您的 sgml-basic-offset 相同。
    【解决方案2】:

    实际上,indent-tabs-mode 应该默认为 t 。

    试试 M-i,只是为了好玩。那应该插入一个制表符。这不是一个很好的解决方案,但它可能会在紧要关头起作用。

    另外,您是如何测试空格与制表符的?穿过它?或删除它?你可能有“向后删除字符取消标签”抬起它的头。

    【讨论】:

    • 是的,我已经尝试杀死并重新打开缓冲区并重新启动 emacs。
    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2021-10-19
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多