Thinkapd X230T 本身的部分解决方案

Thinkapd X230T 本身的部分解决方案

修复硬盘故障后,我在运行 Windows 10 的 Thinkpad X230T 笔记本电脑上安装了 GVIM。除了*.tex文件缓冲区的渲染速度外,其他一切都运行良好。问题是:使用 时syntax on,latex 的缓冲区渲染速度异常缓慢。以下是“功能”列表:

  1. 当我按下时,需要几秒钟来刷新大小为 1920*1080(以像素为单位)的缓冲区<C-f>
  2. 如果我缩小缓冲区的大小,渲染速度会更快。不过,我至少会经历第二次延迟。在延迟期间,我只能看到一个空白的缓冲区。
  3. 文本操作也很慢。简单地按下 开始下面的新行o也会导致一秒的延迟。这主要是因为在添加一行后整个缓冲区的渲染:所有后续行都应刷新到其“新”位置。

作为示例截屏视频: 在此处输入图片描述

我已经应用了这篇文章中提到的所有建议选项(https://stackoverflow.com/questions/8300982/vim-slow-running-latex-files),但渲染速度仍然同样缓慢。

我只在 X230T 上遇到了这种异常减速。在其他两台台式机上也遇到了同样的情况_vimrc,渲染速度甚至没有出现任何微小的延迟。在同一台 X230T 笔记本电脑上安装 Windows 7 和 8 时,我也没有遇到渲染问题。

最后,对于硬盘,我的 X230T 上有一个 SSD,到目前为止运行良好;而我的另外两台台式机上都有 HDD。

任何建议都会非常有用!

多谢!

一切顺利,

-林峰

答案1

问题是,vim 的正则表达式引擎真的很慢,而且我猜 latex 对正则表达式的要求很高。

通过执行以下操作,我能够使 vim 更快一些:

:syn clear texSectionFold
:syn clear texPreamble

这些是主要的违规语法组正则表达式。

我通过以下方式找到它们:

:syntime on

现在按ctrl+L很多次并等待 vim 跟上。然后:

:syntime report

输出结果如下:

  TOTAL      COUNT  MATCH   SLOWEST     AVERAGE   NAME               PATTERN
  8.903872   1911   52      0.017387    0.004659  texSectionFold     \v%(%(\\begin\{document\}.*$\n)@<=^|\\section)
  4.979438   1859   0       0.016382    0.002679  texPreamble        \v%(\\documentclass)@=
  0.634906   1976   182     0.010863    0.000321  texEnvName         \v%(\\%(begin|end)\{)@<=\a+\*?\ze\}
  0.373173   1859   0       0.000880    0.000201  texArgsEnvNormReq  \v(\\begin\{%(theorem|lemma|proposition|corollary|conjecture|definition|remark|example|proof)\*?\}\s*)@<=\{
  0.317732   1859   0       0.000468    0.000171  texArgsEnvNormOpt  \v(\\begin\{%(theorem|lemma|proposition|corollary|conjecture|definition|remark|example|proof)\*?\}\s*)@<=\[
  0.223595   1859   0       0.000341    0.000120  texDimen           \v-?%(\.[0-9]+|([0-9]+(\.[0-9]+)?))%(pt|pc|bp|in|cm|mm|dd|cc|sp|ex|em)>
...

所以你可以看到这两个正则表达式比其他正则表达式要昂贵得多。我不使用折叠,所以禁用折叠对我来说没有问题。不知道为什么查找前导码这么慢。

也许这也对你有帮助,@llinfeng。希望如此!

编辑:

syn clear在 vim 启动时运行这些命令,您需要将它们放入 中~/.vim/after/syntax/tex.vim。它无法在文件中工作ftplugin,因为此时语法定义尚未加载。

编辑2:

事实证明,我上面发布的一些语法组来自插件。禁用插件没有帮助,因为其他一些语法组很慢。哎呀!

我的最终修复以及我对语法高亮的全部要求是:

$ cat ~/.vim/after/syntax/tex.vim 
syn clear
syn match texComment   "%.*$"                                            
hi def link texComment  Comment

速度非常快。

答案2

vim -u NONE filename.tex在打开文件时已用来禁用您的.vimrc脚本和其他脚本在会话中的加载,这样就解决了问题。

结论是该.vimrc文件启动的某些操作导致了速度变慢。

尝试选择性地删除文件的部分内容以找出确切原因。记得进行备份。

答案3

Thinkapd X230T 本身的部分解决方案

问题识别

正如@Edd 所建议的,使用:syntime onsyntime report来识别最耗时的语法突出显示“group/region/match”';

部分解决方案

正如在以下 URL 中找到的,我已经将其加载到我的 Vim 发行版的目录tex.vim中(就我的情况而言):afterc:\vim\vimfiles\after\syntax\

https://github.com/llinfeng/Vim/blob/X230T/vimfiles/after/syntax/tex.vim

结果

使用相同的 LaTeX 文件,我的表现有所改善,如下所示

提高性能

开放问题——如何有效地复制语法高亮

tex.vim与本机的相比,语法着色并不理想c:\vim\vim80\syntax\tex.vim

相关内容