当我有 16 GB RAM 时,为什么 Vim 无法打开 100 MB 文本文件?

当我有 16 GB RAM 时,为什么 Vim 无法打开 100 MB 文本文件?

我有一个 100MB 的 MySQL 数据库备份文件,但在具有 16G RAM 的 Linux 机器上的 Vim 中打开它时遇到问题。

Vim 只是挂起(至少无法使用)。这是我不明白的事情。我有 16 GB RAM,为什么无法在编辑器中加载 100 MB 文件?

是因为 Vim 吗?我认为所有的内存管理都是由操作系统处理的。

答案1

Vim 有时会在处理行数异常长的文件时遇到问题。它是一个文本编辑器,因此它是为文本文件设计的,行长度通常最多为几百个字符宽。

数据库文件可能不包含许多换行符,因此它可能是一个 100 Mb 长的行。 Vim 不会对此感到满意,尽管它可能会工作,但加载文件可能需要相当长的时间。

我确实已经打开了文本使用 Vim 处理大于 100 Mb 的文件。该文件甚至不需要一次全部装入内存(因为 Vim 可以根据需要将更改交换到磁盘)。

答案2

根据我的经验,Vim 不会窒息大文件,但是在排长龙。使用此命令可以得到mysqldump使用较短的线路以牺牲更大的文件:

$ mysqldump --complete-insert -u -p

此外,您可以打开 Vim 并要求它不要解析您的.vimrc文件或使用以下命令加载任何插件:

$ vim -u NONE output.sql

以这种方式加载 Vim 将使用更少的内存,并且不需要 Vim 像许多插件那样解析整个文件。

答案3

“加载没有 .vimrc 和插件的 VIM(干净的 VIM),例如对于巨大的文件

  gvim -u NONE -U NONE -N largefile.sql

答案4

Vim 不只是将文件按原样加载到内存中。它将其转换为内部结构(行、单词等),使用内部脚本语言执行语法突出显示等;所有这些都会消耗内存(比一个字符的一个字节多得多)和 CPU 时间。

相关内容