У меня есть файл резервной копии базы данных MySQL объемом 100 МБ, и я не могу открыть его в Vim на моем компьютере с Linux, имеющим 16 ГБ ОЗУ.
Vim просто зависает (по крайней мере, непригодно для использования). Это то, что я не понимаю. У меня 16 ГБ ОЗУ, почему я не могу загрузить файл размером 100 МБ в редактор?
Это из-за Вима? Я думал, что все управление памятью осуществляется ОС.
hexer
.Ответы:
Vim иногда имеет проблемы с файлами, которые имеют необычно длинные строки. Это текстовый редактор, поэтому он предназначен для текстовых файлов, длина строк которых обычно не превышает нескольких сотен символов.
Файл базы данных может не содержать много символов новой строки, поэтому он может представлять собой одну строку длиной 100 МБ. Vim не будет доволен этим, и, хотя он, вероятно, будет работать, загрузка файла может занять довольно много времени.
Я, конечно, открыл текстовые файлы намного больше, чем 100 Мб с Vim. Файл даже не должен помещаться в память все сразу (так как Vim может обмениваться изменениями на диске по мере необходимости).
источник
set synmaxcol=120
(или какой-либо другой соответствующий номер). Я заметил огромные ускорения от этого в прошлом.По моему опыту, Vim задыхается не от больших файлов , а от длинных строк . Используйте эту команду, чтобы
mysqldump
использовать более короткие строки за счет большего файла :Кроме того, вы можете открыть Vim и попросить его не анализировать ваш
.vimrc
файл или загружать какие-либо плагины с помощью этой команды:Загрузка Vim таким образом потребует меньше памяти и не потребует Vim для анализа всего файла, как это делают многие плагины.
источник
"загрузить VIM без .vimrc и плагинов (чистый VIM), например, для огромных файлов
источник
Попробуйте использовать
less
вместо,vim
если вы хотите просмотреть большой файл напрямую. При первой загрузке Vim пытается сделать много разных вещей - сканировать файл (возможно, за несколько проходов), чтобы попытаться определить, какой синтаксис использовать, и выполнить подсветку синтаксиса, а также поиск моделей в верхней и нижней частях файла. Затем, когда вы редактируете файл, vim сохраняет файлы подкачки и сохраняет деревья отмены (история отмен в vim - это ветвление, а не линейное, как в любом (?) Другом редакторе), и постоянно переоценивает подсветку синтаксиса при изменении текста и т. Д.Ничто из этого не является оправданием того, почему его нельзя использовать с гигантскими файлами, но это скорее объяснение некоторых причин, почему это так.
источник
Vim не просто загружает файл как есть в память. Он преобразует его во внутренние структуры (строки, слова и т. Д.), Выполняет подсветку синтаксиса с использованием внутреннего языка сценариев и т. Д .; все это потребляет память (намного больше, чем байт для символа) и процессорное время.
источник
Вы можете попробовать загрузить его как бинарный файл. Мне повезло с этим для действительно больших, нетекстовых файлов
Также IIRC может использовать vim в качестве шестнадцатеричного редактора, см .: http://usevim.com/2012/06/20/vim-binary-files/
источник
Надеюсь, ваша проблема больше связана с тем, что VIM нужны временные файлы (например, подкачки) больше, чем ОЗУ.
Во многих случаях временные файлы, созданные VIM, находятся в том же каталоге, что и файл, который вы открываете. Если это так, то вы можете проверить, проверив доступное дисковое пространство в текущем каталоге.
К счастью, есть хорошая документация о том, как вы можете указать другое местоположение для файлов индексации / обмена VIM:
Вы также можете отключить файл подкачки
источник
Я иногда открываю большие резервные копии базы данных в текстовом формате .sql. Иногда очень большие файлы или файлы с очень длинными строками иногда открываются в vim. Это может быть связано с обработкой синтаксиса и выделением цвета, как упоминалось в ответах @zzapper и @demonkoryu.
Быстрый обходной путь может заключаться в том, чтобы нажать «control-G» во время загрузки файла, чтобы отменить предварительную обработку подсветки синтаксиса.
источник