突出显示emacs中的尾随空白而不更改字符



我正试图让emacs突出显示尾部空格。我尝试过使用WhiteSpace,也尝试过将show-trailing-whitespace变量设置为true,但在每种情况下,它都会将换行符和空格字符的表示形式更改为$·字符,如本屏幕截图所示。

理想情况下,我只希望看到后面的空白以红色突出显示,而没有任何这样的字符。

免责声明:我是emacs的新手,所以这可能是显而易见的。

我不使用任何库。我只是将show-trailing-whitespace设置为t,任何尾随的空白都显示为红色。换行符和空格字符的表示方式没有改变。

事实上,我的".emacs"文件包含这样一行:

(setq-default show-trailing-whitespace t)

如果您不想编辑".emacs"文件,您可以尝试:

  • C-h v show-trailing-whitespace RET然后单击customize链接
  • (或仅M-x customize-variable RET show-trailing-whitespace RET
  • 单击toggle按钮将其设置为on (non-nil)
  • 单击菜单按钮State>Set for Current Session
  • 单击菜单按钮State>Save for Future Sessions

[编辑](感谢Francesco Frassinelli的评论)

对于setq-default,每个模式的值都会发生变化。

如果你想在某些模式下禁用它(例如term-mode),你必须:

  • 查找当前缓冲区的模式名称。通常,您可以使用M-x describe-mode RET(快捷方式C-h m<f1> m)从缓冲区中获取它。

  • 找到该模式的条目"hook"。通常,它是带有后缀-hook的模式名称。您可以通过在描述模式的缓冲区中搜索"hook"来找到它。例如,您可以阅读:

    Entry to this mode runs the hooks on ‘term-mode-hook’

  • 将以下内容添加到".emacs"文件中:

    (add-hook 'term-mode-hook (lambda () (setq show-trailing-whitespace nil)))

  • 或者你可以试试:

    • M-x customize-variable RET term-mode-hook RET
    • 单击INS按钮
    • 粘贴(lambda () (setq show-trailing-whitespace nil))
    • 单击菜单按钮State>Set for Current Session
    • 单击菜单按钮State>Save for Future Sessions

注意,当设置为setq时,show-trailing-whitespace自动变为缓冲区本地。

whitespace-style变量的值更改为

(face trailing)

您可能需要重新启动空白模式才能使更改生效。

要设置变量,请使用M-xset-variable输入

另一个答案是使用库highlight-chars.el(说明:高亮显示库)。

命令hc-toggle-highlight-trailing-whitespace执行您的请求。

您也可以自动打开这种高亮显示,无论是在任何地方,还是在给定的缓冲区或给定的模式下。

最新更新