使用LaTeX文件时Vim运行缓慢

kxxlusnw  于 2022-11-11  发布在  其他
关注(0)|答案(5)|浏览(186)

我使用Vim与一堆插件(病原体,ctags,snipmate,supertab,...),一切工作正常的各种文件扩展名。
然而,当我试图编辑.tex文件时,它出现了两个问题,这两个问题似乎是相关的。首先,Vim开始工作非常缓慢,其次,当我按“任何字母+ Tab”时,它试图自动完成之前在文本中写入的单词。
我试图解决这些问题的一种方法是从我的包文件夹中删除超级标签插件,但这不是一个令人满意的解决方案。

yvgpqqbh

yvgpqqbh1#

问题是由于relativenumber选项,当我关闭它的乳胶编辑速度恢复正常。

0pizxfdo

0pizxfdo2#

下面的relativenumber,cursorline和MatchParen会让vim的速度变慢很多,尤其是在处理大的latex文件时。当我关闭它们时,vim在处理大的latex文件时会变得更快。
要关闭相对编号,请在编辑器模式下键入以下内容:
:set nornu
要关闭光标线,请在编辑器模式下键入以下内容:
:set nocursorline
若要关闭MatchParen,请在编辑器模式下键入以下内容:
:NoMatchParen
如果您仍然需要常规行号,则可以使用
:set number
要获得更持久的解决方案,您还可以在~/.vimrc文件中设置latex特定设置:

" Latex specification
au BufNewFile,BufRead *.tex
    \ set nocursorline |
    \ set nornu |
    \ set number |
    \ let g:loaded_matchparen=1 |

\|允许您在多行上添加latex命令。

ql3eal8s

ql3eal8s3#

其他两个可能的问题是以下活动

  1. cursorline
  2. DoMatchParen
    因此,为了让您的L T X编辑体验更好,您可以在~/.vimrc中执行以下操作
au FileType tex setlocal nocursorline
au FileType tex :NoMatchParen

在这样做之后,我的VIM对.tex文件的速度和对.cpp文件的速度一样快。

imzjd6km

imzjd6km4#

我知道这是一个老问题,但是,对于现在看到这个问题的人来说,最好使用.vim目录中的ftplugin/文件夹来指示Vim对特定文件类型启用某些选项。

set nocursorline
set nornu
let g:loaded_matchparen=1

这使得Vim只在TeX文件(*.tex和相关文件)上加载这些选项,而不像gloriphobia’s answer那样求助于:autocommand

yzxexxkh

yzxexxkh5#

折叠是另一个导致速度减慢的常见原因。默认情况下,它通常是禁用的,但可能您已经启用了它。您可以再次禁用它:

" (1) if you use the builtin TeX support:
  " comment the line in your vimrc that looks like this:
  "let g:tex_fold_enabled = ...
  " OR, just to be sure, do:
  unlet! g:tex_fold_enabled

" (2) if you rather use VimTeX:
  " comment the line in your vimrc that looks like this:
  "let g:vimtex_fold_enabled = 1
  " OR, just to be sure, do:
  let g:vimtex_fold_enabled = 0

请注意,折叠必须在 * TeX语法加载到缓冲区之前 * 启用/禁用。此外,Vim选项'foldenable'(由正常模式命令zi切换)实际上并不清除折叠,它只是隐藏折叠,但它仍然存在)。

**但是,**如果您不想完全给予折叠功能,我发现内置TeX折叠功能中存在一个瓶颈,它是我的案例中速度降低的主要原因:document环境。简单测试:在\begin{document}之前键入内容相当快,但在它之后键入内容却令人惊讶地滞后。我猜这是因为这种环境通常会跨越数百行。

如果你使用内置的TeX折叠,你可以通过禁用texDocZone匹配组¹来防止只折叠document环境。无论如何,你为什么要折叠顶层内容呢?

" put this in your vimrc :
au FileType tex :syntax clear texDocZone
" OR put this in ~/.vim/after/syntax/tex.vim :
syntax clear texDocZone

或者,如果你有VimTeX,你可以用VimTeX“One替换内置的TeX折叠。我发现它一般更好,而且它小心地避免折叠X1 M6 N1 X环境。

" put this in your vimrc :
unlet! g:tex_fold_enabled  " just to be sure
let g:vimtex_fold_enabled = 1

VimTeX的折叠是很好的定制,见:help vimtex-folding
¹ the builtin TeX syntax的第121版(2022年4月)。

相关问题