Vim是否将整个文件读入内存?

7
当我打开一个文件时,vim是否会将它全部读入内存?当我打开大文件时,我会遇到明显的减速。还是vim正在忙于计算某些东西(例如行号)?
2个回答

2

禁用诸如语法高亮、光标行、行号等功能将大大减少负载并使Vim在这些情况下更加迅速。

甚至有一个插件可以为您处理,以及一个Vim提示提供一些背景信息。


1
非常感谢您的建议。对我很有用。但我仍然想知道我最初提出的问题。 - dacongy
5
是的,该文件已加载到内存中。 - romainl

2
是的,Vim会将整个文件加载到内存中。
如果在另一个面板中运行htop,则可以实时观察到这种情况发生。
如果可用内存不足,则会开始使用交换空间,这会使加载时间更长。
您可以禁用插件和繁重功能(如语法高亮),以获得更好的性能(-u实际上告诉vim不要加载您的~/.vimrc): vim -u NONE mysqldump.sql 但是,除非您真的需要编辑该文件,否则我更喜欢使用其他工具。 我通常使用less。 我主要使用/在vim中搜索文件,而less也可以很好地支持这一点。 less mysqldump.sql

Vim不会将整个文件加载到内存中。从vim 8.2 / nvim 0.6.1开始,这并不是真的。虽然它们映射了整个文件(如通过pmap <PID>所见),但除非使用,否则它们不会将其物理加载到内存中。如果使用,vim仅映射文件的相关段。通过valgrind --tool=massif vim ...ms_print查看。因此,除非需要,否则vim不会使用物理内存,并且在打开大文件后不会自动执行此操作。(但是,某些插件和功能可能会尝试索引文件或以其他方式处理它,从而导致减速) - SoptikHa

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