Vim-python语法高亮显示将挂起很长的行



我有这个python脚本,在一行中我有一个1000个字符长的字符串。我有语法高亮显示,vim挂在这行。如果我将文件扩展名更改为c++,它就可以工作了。我怀疑语法突出显示插件的问题是导致挂起的原因。

这能以某种方式解决吗?我使用的是vim版本7.4.52

过长的行会显著降低Vim的语法高亮显示速度;通常,这是语法脚本的错误,您应该通知其作者(在$VIMRUNTIME/syntax/python.vim脚本标头中找到)。

Vim 7.4包含:syntime命令,该命令有助于排除故障并查找有问题的正则表达式。

:set synmaxcol=...设置为低于默认3000的值可能会有所帮助。

Vim挂起用于超长线路

首先决定是在~/.vimrc中还是在vim命令:scriptnames显示的众多vim加载脚本中。另请参见:help scriptnames。如果这是你的问题,那么这个命令会很快:

vim -u NONE hugefile.txt

-u NONE表示不使用任何用户配置脚本。您必须使用消除过程来确定语法高亮显示、折叠、插件或其他什么,如磁盘错误、CPU节流、内存泄漏、虚拟内存耗尽、网络延迟或其他什么。关闭从~/.virc开始的东西,并通过将命令finish放在脚本文件的顶部来禁用:scriptnames中的脚本。

如果速度不快,下一步再决定是否是排长队的问题。如果将在vim缓冲区中呈现的行在视图窗格中并且非常长,那么vanilla vim将从磁盘上读取该行的每一个字符,然后将set wrap施加在缓冲区的该行上,以便聚合命令工作。关闭所有这些:

vim -u NONE --cmd "set nowrap" hugefile.txt

--cmd意味着在缓冲区加载之前运行这个命令,这样vim就不会麻烦读取整行。如果速度很快,那么你的问题是vim正在阅读>10MB线路,用于向缓冲区演示。不要那样做,你就不会有问题。

其他想法是消除ft=syn=syntax off以分离whodunit。我看到Vim8在5秒内从pcie nvme.m2 ssd打开15GB文件。同时提醒升级到neovim。

告诉vim帮助您确定哪个脚本的启动时间最长:

vi --startuptime log.out hugefile.txt

然后检查log.out并查看标记为花费最多时间的。

有关vimscript函数和语句级别的内省和性能测量,请参阅:help profiling和http://vimcasts.org/episodes/profiling-vimscript-performance

最新更新