【问题标题】:vim syntax performance with very long lines非常长的行的 vim 语法性能
【发布时间】:2014-11-08 09:26:06
【问题描述】:

我正在使用 vim 编辑包含一些非常长的行(100000 人物)。 Vim 在这种输入下非常慢。如果我关闭语法 高亮显示 (:syntax off),Vim 不再慢了。

长度的原因是一些代码块包含json 包含以 base64 编码的图像。 (实际上,我正在尝试编辑 ipython 笔记本的markdown version)。

这是有问题的文字的样子:

```{.json .output n=41}                                                                                                                                                                                              
[                                                                                                                                                                                                                    
{                                                                                                                                                                                                                   
"metadata": {},                                                                                                                                                                                                    
"output_type": "display_data",                                                                                                                                                                                     
"png": "iVBORw0KGgoAAAANSUhEUgAAAtAAAAFxCAYAAAB....long...long....line...."
}                                                                                                                                                                                                                   
]                                                                                                                                                                                                                    
```        

我希望 Vim 不慢。

我想到的可能解决方案:

  1. set synmaxcol=250 - 不,在长行后中断语法高亮

  2. 对长行有选择地禁用语法高亮(不知道该怎么做 这个)

  3. 对以 {.json 开头的代码块禁用语法突出显示(不要 知道如何)

我正在使用vim-pandoc 语法高亮。这为代码块提供了语法组 pandocDelimitedCodeBlock 或例如pandocDelimitedCodeBlock_json如果你转 关于语言检测。

这也意味着我正在折叠语法组 (foldmethod=syntax) 是缓慢的可能来源(请参阅stackoverflowgithubsuperuser)。 但是,:set foldmethod=manual 并没有解决问题。

【问题讨论】:

  • 你启用了软换行吗?另一个想法:你的书的读者可能也不喜欢长线,你真的需要它们吗?
  • set synmaxcol={low value} 是唯一实用的解决方案:您不希望这些二进制 blob 的语法突出显示。
  • @mb21 没有软包装。长长的队伍只在生产中出现——它们在出版时变成了图像。
  • @romainl 是的,但是这样做会破坏长行之后的语法突出显示
  • 不,it doesn't

标签: vim markdown vim-plugin


【解决方案1】:

vim-pandoc 广泛使用语法折叠,我很确定这就是问题所在。禁用 vim-pandoc-syntax 并关闭折叠 (let g:pandoc#modules#disables = ['folding']) 使 vim 再次变得更快。

对于语法高亮,我使用了 tpope 的 vim-markdown 的分支。我已经分叉了它,因为原始没有语法高亮具有 pandoc 样式属性的代码块(拉取请求here)。

对于使用 foldexpr 折叠标题 围栏代码块,我使用了我的 fork vim-markdown-folding。分叉是因为原始代码块不会折叠(拉取请求here)。

虽然这并不能真正回答我的问题(我同意这个问题的定义不明确),但它确实解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2018-01-08
    • 1970-01-01
    • 2021-05-24
    相关资源
    最近更新 更多