Vim python语法高亮显示挂起非常长的行

时间:2015-12-11 11:59:54

标签: python vim syntax-highlighting vim-syntax-highlighting

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

这可以以某种方式修复吗?我使用的是vim版本7.4.52

2 个答案:

答案 0 :(得分:3)

过长的行可能会大大减慢Vim的语法高亮;通常,这是语法脚本的错误,您应该通知其作者(在$VIMRUNTIME/syntax/python.vim脚本标题中找到)。

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

:set synmaxcol=...可能有助于低于默认3000的值。

答案 1 :(得分:0)

Vim挂了很长的线

首先确定让您放慢脚步的是您的~/.vimrc还是vim命令:scriptnames显示的许多vim加载脚本之一。另请参见:help scriptnames。如果这是您的麻烦,那么此命令将很快:

vim -u NONE hugefile.txt

-u NONE表示不使用任何用户配置脚本。您必须使用消除过程来找出语法高亮显示,折叠,插件或其他类似磁盘错误,CPU节流,内存泄漏,虚拟内存耗尽,网络延迟或其他原因的问题。从〜/ .vimrc开始关闭内容,并通过将命令:scriptnames放在脚本文件的顶部来禁用finish中的脚本。

如果那不快,接下来确定是否是长行。如果要在vim缓冲区中渲染的行在视区中并且又很长,那么vanilla vim将从磁盘上读取该行的每个字符,然后在该行上对缓冲区造成set wrap以便聚合命令起作用。通过以下方式关闭所有功能:

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

--cmd意味着在缓冲区加载之前运行此命令,这样vim不会读取整个行。如果那很快,那么您的问题是vim正在读取> 10MB的行以呈现给缓冲区。不用那样,您就不会有问题。

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

告诉vim以帮助您确定哪个脚本花费了最多的启动时间:

vi --startuptime log.out hugefile.txt

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

有关可追溯到vimscript函数和语句级别的自省和性能,另请参见:help profilinghttp://vimcasts.org/episodes/profiling-vimscript-performance