在不改变字符的情况下突出显示emacs中的尾随空格

时间:2015-12-30 14:56:58

标签: emacs whitespace

我正在尝试使用emacs来突出显示尾随空格。我尝试过使用WhiteSpace,并尝试将show-trailing-whitespace变量设置为true,但在每种情况下都会将换行符和空格字符的表示形式更改为$·个字符,如screen capture所示。

理想情况下,我希望只看到以红色突出显示的尾随空格而没有任何此类字符。

免责声明:我是emacs的新手,所以这很明显。

3 个答案:

答案 0 :(得分:13)

我没有使用任何图书馆。我只是将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)在缓冲区内获取。

  • 找到条目&#34; hook&#34;对于这种模式。通常,它是带有后缀-hook的模式名称。您可以通过搜索&#34; hook&#34;找到它。在描述模式的缓冲区中。例如,您可以阅读:

    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&gt; Set for Current Session
    • 点击菜单按钮State&gt; Save for Future Sessions

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

答案 1 :(得分:3)

whitespace-style变量的值更改为

(face trailing)

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

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

答案 2 :(得分:0)

另一个答案是使用库highlight-chars.el(说明:Highlight library)。

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

您也可以在任何地方或在给定缓冲区或给定模式下自动打开此类突出显示。