Vim:400+行插入模式非常缓慢

11
我有一个400多行的文件(是一篇论文)。当我在上面编辑它(比如在第20行),Vim像往常一样快。然而,当我在底部编辑它(大约在第400行左右),我输入字符和Vim在屏幕上显示之间会有明显的延迟。因此,编辑这么大的文件几乎是不可能的。
原因是什么,我该怎么办?
我已经尝试切换swapfile、syntax、scrolloff等选项,但似乎没有帮助。Vim的最大行数应该为2147483647,所以我实际上还有很长的路要走:)
如果这与设置maxmem有关,那么考虑到我编辑高达2500行的文件,合理的值是多少?
非常感谢任何帮助!干杯。

1
尝试使用 vim -u NONE 启动 Vim。行为相同吗? - Fredrik Pihl
1
通常情况下,对于vim来说,400到2500行代码只是小菜一碟。你的文件有多大? - Kent
4
400行很少,2500也是如此。你使用set wrap吗?最长的一行有多长?你使用哪种文件类型?你是否使用任何插件?Vim的版本是什么?你使用的操作系统是什么?使用Shell还是GUI? - romainl
@Fredrik,这似乎有效。这意味着问题出在我的设置中,对吗? - martz
是的,问题可能出在某个插件或设置上。不过很难找到具体是哪里出了问题。只需将你的 .vimrc 文件中的所有内容注释掉,然后逐步添加代码片段,直到问题再次出现... - Fredrik Pihl
显示剩余4条评论
4个回答

18

好的,折叠是问题所在(我对foldlevelstart设置有些不当)。因此,根据我的经验和这些 问题

set foldenable              " can slow Vim down with some plugins
set foldlevelstart=99       " can slow Vim down with some plugins
set foldmethod=syntax       " can slow Vim down with some plugins

需要检查/切换的其他事项包括syntaxfiletypewrap和行长度(某些插件可能在非常长的行上运行缓慢)。

在没有当前设置的情况下运行Vim是一个很好的起点。感谢@Frederik指引我到这里:

vim -u NONE

在此之后,禁用所有插件是一个好的开始。另外,为了增加一般知识,请参见::help slow

过去在粘贴超过10行的代码时,我遇到了一些速度问题,并且禁用折叠(在我的情况下是vim_markdown)解决了这个问题! - MNN

5
我最近遇到了一个问题 - 当我在一个相对较短(markdown)文件的底部输入时会出现卡顿的情况。在卸载插件并注释掉我的.vimrc中的大多数设置后,我发现问题是来自预安装在vim中的vim-markdown插件的标记折叠。将let g:markdown_folding = 1注释掉解决了这个问题。
我仍然希望在markdown文件中实现自动折叠,因此我安装了vim-markdown-folding,这样就没有性能问题了。

1
感谢您的输入!虽然这是很久以前的事情了,但我当时肯定也在使用vim中的Markdown。不确定当时是vim-markdown、VOoM还是其他具有大纲功能的插件。但是,确实当时我一定是在另一个窗口中编写长篇Markdown文档并使用折叠视图。很高兴您也解决了这个问题。 - martz

2

相对行号在多窗口打开同一文件时会出现卡顿。你需要执行:set norelativenumber或关闭其他窗口。


感谢。这解决了在Markdown文件中输入时的延迟问题。 - raine

0
不要只怪语法,一些事情会减慢正常模式下的编辑速度。例如自动补全;我曾经有过好几天都认为我的 Vim 速度慢是因为语法。我配置了自动完成插件,只有在我输入至少6个字符后才触发自动完成,速度大大提高。我甚至不需要改变语法高亮方面的任何东西。

更新2020:你可能想要尝试使用coc.nvim作为你的语言智能引擎。它非常棒,可以在编辑模式下异步地完成自动补全,因此你的体验不会变慢。vim行 - John Mutuma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接