【问题标题】:Show trailing whitespace on emacs only on non-empty lines仅在非空行上显示 emacs 上的尾随空格
【发布时间】:2009-09-11 19:44:05
【问题描述】:

我现在正在使用:

(setq show-trailing-whitespace t)

在我的.emacs 中显示我的 CC 模式的尾随空格。我似乎无法弄清楚如何让它不显示仅空白行的空白字体。

分隔缩进代码的空行有时会在代码级别缩进,有时根本不缩进,我不想将注意力转移到我不想更改的行上。

我想坚持使用内置的 emacs 模块,但我愿意使用whitespace.el,但不清楚如何配置它来做到这一点。

【问题讨论】:

    标签: emacs coding-style whitespace


    【解决方案1】:

    由于您想使用内置模块,我建议您使用您指定的 whitespace.el 链接 - 因为它随 Emacs 23 一起提供。这个答案在使用该空格时有效。

    只要您的'whitespace-style 变量中有'trailing(默认情况下),以下对指示“尾随”空格的正则表达式的更改应该可以满足您的需求:

    (setq whitespace-trailing-regexp
      "\\b\\(\\(\t\\| \\|\xA0\\|\x8A0\\|\x920\\|\xE20\\|\xF20\\)+\\)$")
    

    注意:这只是默认值,前面加上\b,表示空格应该跟在一个单词后面。

    【讨论】:

      【解决方案2】:

      "\\b.*\\(\\(\t\\| \\|\xA0\\|\x8A0\\|\x920\\|\xE20\\|\xF20\\)+\\)$"

      单词不需要直接在尾随空格之前,但可以有例如它们之间的标点符号(即,这也会突出显示非单词字符后面的尾随空格)。

      编辑:
      使用

      "\\b.*?\\(\\(\t\\| \\|\xA0\\|\x8A0\\|\x920\\|\xE20\\|\xF20\\)+\\)$")

      突出显示所有尾随空格,从而消除注释#1中提到的缺点。

      【讨论】:

      • 不利的一面是,M-x whitespace-cleanup 不再删除所有空格,而是仅删除行中的最后一个(突出显示的)...
      • 使用M-x picture-mode 后跟C-c C-c 删除所有尾随空格。
      • 我无法让这个提议的解决方案在 Emacs 26.3 中工作。我正在使用 "\\b.*?\(\(\t\\| \\|\xA0\\|\x8A0\\|\x920\\|\xE20\\|\xF20\)+\) $" 作为 whitespace-trailing-regexp 的值,遗憾的是,由所有空白组成的行仍然以红色突出显示。
      • @jim-newton 您的表达式包含\(\( 而不是\\(\\(。与) 相同。还是粘贴问题?
      猜你喜欢
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 2015-04-26
      相关资源
      最近更新 更多