Чому Vim може відкривати великі файли швидше, ніж деякі інші текстові редактори?


10

Відкриваючи великі файли журналів (ну, не такі великі, але 80mb все ще багато тексту!), Я завжди використовував Vim, оскільки він завантажує їх майже миттєво. Інші текстові редактори, такі як Блокнот, Блокнот ++ і т. Д., Потребують> 10 секунд для обробки та завантаження файлу. У чому причина цього? Що робить Vim таким швидким?


8
Увімкніть підсвічування синтаксису і здивуйтеся, наскільки повільним може стати vim
Марко

11
Близьким виборцям: Я б заперечував, що це питання є конструктивним - як свідчить відповідь, є методи, які Vim використовує, які роблять його більш ефективним у великих файлах, ніж деякі інші редактори. Це конкретна відповідь, яку можна підтвердити фактами / посиланнями. І я не впевнений, чому люди можуть вважати це локалізованим; є чітка різниця в тому, як редактори обробляють файли, що впливають набагато більше, ніж невелика географічна область, конкретний момент часу або надзвичайно вузька ситуація .
Боб

1
@Bob - я не бачу, як відповідь на це питання вирішує будь-які проблеми.
Ніфле

Відповіді:


16

Існує безліч хитрощів, якими редактори можуть скористатися для оптимізації роботи з великими файлами.

Одна - працювати лише з тим, що їм потрібно. Це означає, що не намагатися проаналізувати весь файл на такі речі, як підрахунок рядків, вимірювання ширини, обгортання слів, виділення синтаксису, перевірка XML, візуалізація HTML, скасування тощо. Для Vim доступний плагін LargeFile, який відключить ряд функцій Vim коли відкривається "великий" (як визначено користувачем) файл. На сторінці швидшого завантаження великих файлів у вікі Віма згадуються деякі відключені функції: ігнорувати тип файлу (для підсвічування синтаксису / розбору), відключити скасування, перейти в режим лише для читання. Є й інші зміни, але вони, здається, спрямовані на збереження пам'яті, а не на швидкість.

Інша - картографічна пам'ять. Замість того, щоб читати весь файл у пам'яті, скажіть базовій ОС, щоб він переглянув перегляд файлу безпосередньо в простір пам'яті процесів. Я не впевнений, чи робить це зокрема Vim, але інші редактори можуть і робити.

Це, мабуть, найбільші 2, але, безумовно, є і більше.


Чи є у вас посилання на vim, використовуючи будь-яку з цих методик?
slhck

Я не можу коментувати картування пам'яті зокрема, але перше, безумовно, можна зробити. Відредагуйте майбутні.
afrazier

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.