如何停止 Vim 突出显示 python 文件中的尾随空格

jea*_*one 4 python vim

问题的标题几乎描述了问题

在我的 vimrc 文件中我什至输入了以下内容:

let python_highlight_all = 0
Run Code Online (Sandbox Code Playgroud)

但这根本没有帮助

UPD:我让它与 python.vim 中的 Monkeypatch 一起工作。我刚刚评论了这一行:

syn match   pythonSpaceError    display excludenl "\s\+$"
Run Code Online (Sandbox Code Playgroud)

如果有人有更好的解决方案请回答

Tac*_*roy 6

造成这种情况的原因至少有两个:

  1. python_highlight_all被定义为
  2. python_space_error_highlight被定义为

因为如果你进行monkeypatch,问题就消失了,syntax/python.vim这个突出显示应该来自Vim的默认Python语法文件。在语法文件中,高亮由以下代码控制:

# vim80/syntax/python.vim
if exists("python_highlight_all")
  ...
  let python_space_error_highlight = 1
endif
Run Code Online (Sandbox Code Playgroud)

使用此代码,python_space_error_highlight如果变量python_highlight_all存在(无论其值如何),则启用。所以可能python_highlight_all和/或python_space_error_highlight在某处定义。

如果将下面的代码添加到 vimrc 中,结果如何?

if exists('python_highlight_all')
    unlet python_highlight_all
endif
if exists('python_space_error_highlight')
    unlet python_space_error_highlight
endif
Run Code Online (Sandbox Code Playgroud)


Ing*_*kat 5

在 中$VIMRUNTIME/syntax/python.vimpythonSpaceError语法组被条件包围if exists("python_space_error_highlight")(在 Vim 8.0 中;使用 2016 年 10 月 29 日的语法文件)。

因此,无需进行猴子修补,您确实可以通过既不定义也不定义 python_space_error_highlight python_highlight_all将其关闭(因为后一个定义也会自动定义前者)。

(即使配置值为0,因为脚本只是测试变量是否存在(这很奇怪并且违反了通常的约定;您可能想向脚本的作者抱怨这一点)。因此,请确保您不这样做设置了这些配置变量,它应该可以工作。