问题的标题几乎描述了问题
在我的 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)
如果有人有更好的解决方案请回答
造成这种情况的原因至少有两个:
python_highlight_all被定义为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)
在 中$VIMRUNTIME/syntax/python.vim,pythonSpaceError语法组被条件包围if exists("python_space_error_highlight")(在 Vim 8.0 中;使用 2016 年 10 月 29 日的语法文件)。
因此,无需进行猴子修补,您确实可以通过既不定义也不定义 python_space_error_highlight 或 python_highlight_all将其关闭(因为后一个定义也会自动定义前者)。
(即使配置值为0,因为脚本只是测试变量是否存在(这很奇怪并且违反了通常的约定;您可能想向脚本的作者抱怨这一点)。因此,请确保您不这样做设置了这些配置变量,它应该可以工作。