Dlaczego Vim może otwierać duże pliki szybciej niż niektóre inne edytory tekstu?

10

Podczas otwierania dużych plików dziennika (no, nie , że duży, ale 80MB jest jeszcze dużo tekstu!), Zawsze stosowany Vim ponieważ ładuje je niemal natychmiast. Inne edytory tekstu, takie jak Notepad, Notepad ++ itp., Zajmą> 10 sekund na przetworzenie i załadowanie pliku. Jaki jest tego powód? Co sprawia, że ​​Vim jest tak szybki?

Anonimowy
źródło
8
Włącz podświetlanie składni i zdziw się, jak powolny może być vim
Marco
11
Do najbliższych wyborców: argumentowałbym, że to pytanie jest konstruktywne - jak wskazuje odpowiedź, istnieją techniki, które Vim sprawia, że ​​jest on bardziej wydajny w przypadku większych plików niż niektóre inne edytory. To konkretna odpowiedź, którą mogą poprzeć fakty / referencje. I nie jestem pewien, dlaczego ludzie mogą uznać to za zlokalizowane; istnieje wyraźna różnica w sposobie, w jaki redaktorzy obsługują pliki, które dotyczą znacznie więcej niż niewielkiego obszaru geograficznego, określonego momentu w czasie lub wyjątkowo wąskiej sytuacji .
Bob
1
@ Bob - Nie widzę, jak odpowiedź na to pytanie rozwiązuje jakiekolwiek problemy.
Nifle,

Odpowiedzi:

16

Istnieje wiele sztuczek, które mogą być wykorzystane przez redaktorów w celu zoptymalizowania obsługi dużych plików.

Jednym z nich jest praca tylko z tym, czego potrzebują. Oznacza to, że nie próbujesz analizować całego pliku w celu liczenia linii, pomiaru szerokości, zawijania słów, podświetlania składni, sprawdzania poprawności XML, renderowania HTML, cofania itp. Dla Vima dostępna jest wtyczka LargeFile, która wyłącza wiele funkcji Vima po otwarciu „dużego” (zdefiniowanego przez użytkownika) pliku. Strona Szybsze ładowanie dużych plików na wiki Vima wspomina o niektórych wyłączonych funkcjach: zignoruj ​​typ pliku (dla podświetlania / parsowania składni), wyłącz cofanie, przejdź do trybu tylko do odczytu. Są też inne zmiany, ale wydaje się, że mają one na celu zachowanie pamięci niż prędkości.

Kolejnym jest mapowanie pamięci. Zamiast wczytywać cały plik do pamięci, powiedz systemowi operacyjnemu, aby odwzorował widok pliku bezpośrednio w obszar pamięci procesów. Nie jestem pewien, czy Vim to robi, ale inni redaktorzy mogą to zrobić.

To prawdopodobnie największe 2, ale na pewno jest ich więcej.

afrazier
źródło
Czy masz referencje dla vima używającego którejkolwiek z tych technik?
slhck
Nie mogę w szczególności komentować mapowania pamięci, ale pierwszy można zdecydowanie zrobić. Edytuj nadchodzące.
afrazier