
У меня есть файл резервной копии базы данных MySQL размером 100 МБ, и у меня возникли проблемы с его открытием в Vim на моем компьютере с Linux и 16 ГБ оперативной памяти.
Vim просто зависает (по крайней мере, неиспользуемый). Этого я не понимаю. У меня 16 ГБ ОЗУ, почему я не могу загрузить файл размером 100 МБ в редактор?
Это из-за Vim? Я думал, что всем управлением памяти занимается ОС.
решение1
Vim иногда испытывает проблемы с файлами, имеющими необычно длинные строки. Это текстовый редактор, поэтому он разработан для текстовых файлов, в которых длина строк обычно не превышает нескольких сотен символов.
Файл базы данных может не содержать много символов новой строки, поэтому он, вероятно, может быть одной строкой длиной 100 Мб. Vim не будет доволен этим, и хотя это, вероятно, будет работать, загрузка файла может занять довольно много времени.
Я, конечно, открылтекстфайлы намного больше 100 Мб с Vim. Файлу даже не обязательно помещаться в память целиком (поскольку Vim может выгружать изменения на диск по мере необходимости).
решение2
По моему опыту Vim не подавляетсябольшие файлы, но надлинные линии. Используйте эту команду, чтобы иметьmysqldump
использоватьболее короткие линииза счет абольший файл:
$ mysqldump --complete-insert -u -p
Кроме того, вы можете открыть Vim и запретить ему анализировать ваш .vimrc
файл или загружать какие-либо плагины с помощью этой команды:
$ vim -u NONE output.sql
Загрузка Vim таким способом будет использовать меньше памяти и не потребует от Vim анализа всего файла, как это делают многие плагины.
решение3
"загрузить VIM без .vimrc и плагинов (чистый VIM), например для ОГРОМНЫХ файлов
gvim -u NONE -U NONE -N largefile.sql
решение4
Vim не просто загружает файл в память как есть. Он преобразует его во внутренние структуры (строки, слова и т. д.), выполняет подсветку синтаксиса с использованием внутреннего скриптового языка и т. д.; все это потребляет память (гораздо больше, чем байт на символ) и процессорное время.