Почему Vim может открывать большие файлы быстрее, чем некоторые другие текстовые редакторы?


10

При открытии больших файлов журналов (ну, не что большой, но 80MB еще много текста!), Я всегда использовал Vim , поскольку он загружает их почти мгновенно. Другие текстовые редакторы, такие как «Блокнот», «Блокнот ++» и т. Д., Обрабатывают и загружают файл> 10 секунд. Что является причиной этого? Что делает Vim таким быстрым?


8
Включите подсветку синтаксиса и удивитесь, насколько медленным может стать vim
Марко

11
Для близких избирателей: Я считаю , что этот вопрос является конструктивно - в ответ указывает на то , есть методы Vim использует , которые делают его более эффективным с большими файлами , чем некоторые другие редакторы. Это конкретный ответ, который может быть подтвержден фактами / ссылками. И я не уверен, почему люди могут считать это локализованным; есть четкое различие в том, как редакторы обрабатывают файлы, которые затрагивают намного больше, чем небольшая географическая область, конкретный момент времени или необычайно узкая ситуация .
Боб

1
@Bob - я не вижу, как ответ на этот вопрос решает любые проблемы.
Nifle

Ответы:


16

Существует множество хитростей, которые редакторы могут использовать для оптимизации работы с большими файлами.

Один - работать только с тем, что им нужно. Это означает, что не нужно анализировать весь файл для таких вещей, как подсчет строк, измерение ширины, перенос слов, подсветка синтаксиса, проверка XML, рендеринг HTML, отмена и т. Д. Для Vim доступен плагин LargeFile, который отключит ряд функций Vim. когда открывается «большой» (по определению пользователя) файл. На странице « Быстрая загрузка больших файлов» в вики Vim упоминаются некоторые из отключенных функций: игнорировать тип файла (для подсветки / разбора синтаксиса), отключать отмену, переключаться в режим только для чтения. Есть и другие изменения, но, похоже, они направлены на сохранение памяти, а не на скорость.

Другим является отображение памяти. Вместо того, чтобы читать весь файл в память, скажите операционной системе, чтобы она отображала представление файла непосредственно в пространство памяти процессов. Я не уверен, что именно Vim делает это, но другие редакторы могут и делают.

Это, вероятно, самые большие 2, но, безусловно, есть и другие.


У вас есть ссылка на vim, использующую какой-либо из этих методов?
slhck

В частности, я не могу комментировать отображение памяти, но первое, безусловно, можно сделать. Редактировать готовится.
afrazier

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.