Mam plik kopii zapasowej bazy danych MySQL 100 MB i mam problem z otwarciem go w Vimie na moim komputerze z systemem Linux, który ma 16 GB pamięci RAM.
Vim po prostu się zawiesza (przynajmniej nie nadaje się do użytku). To jest coś, czego nie rozumiem. Mam 16 GB pamięci RAM, dlaczego nie mogę załadować pliku 100 MB w edytorze?
Czy to z powodu Vima? Myślałem, że zarządzanie pamięcią jest obsługiwane przez system operacyjny.
hexer
.Odpowiedzi:
Vim czasami ma problemy z plikami, które mają niezwykle długie linie. Jest to edytor tekstowy, więc jest przeznaczony do plików tekstowych o długości linii zwykle wynoszącej maksymalnie kilkaset znaków.
Plik bazy danych może nie zawierać wielu znaków nowego wiersza, więc może to być pojedyncza linia o długości 100 Mb. Vim nie będzie z tego zadowolony i chociaż prawdopodobnie będzie działać, załadowanie pliku może potrwać dość długo.
Z pewnością otworzyłem w Vimie pliki tekstowe znacznie większe niż 100 Mb. Plik nie musi nawet mieścić się w pamięci naraz (ponieważ Vim może w razie potrzeby zamieniać zmiany na dysku).
źródło
set synmaxcol=120
(lub inny odpowiedni numer). W przeszłości zauważyłem ogromne przyspieszenie.Z mojego doświadczenia wynika, że Vim dusi się nie na dużych plikach , ale na długich liniach . Użyj tego polecenia, aby
mysqldump
użyć krótszych linii kosztem większego pliku :Ponadto możesz otworzyć Vima i poprosić go, aby nie analizował
.vimrc
pliku ani nie ładował żadnych wtyczek za pomocą tego polecenia:Załadowanie Vima w ten sposób zużyje mniej pamięci i nie będzie wymagało od Vima parsowania całego pliku, jak robi to wiele wtyczek.
źródło
msgstr "ładuj VIM bez .vimrc i wtyczek (czyste VIM) np. dla OGROMNYCH plików
źródło
Spróbuj użyć
less
zamiast,vim
jeśli chcesz bezpośrednio wyświetlić duży plik. Vim próbuje zrobić wiele różnych rzeczy przy pierwszym ładowaniu - skanuje plik (potencjalnie w wielu przebiegach), aby spróbować ustalić, jakiej składni użyć, i podświetlać składnię oraz wyszukiwać modeliny na górze i na dole pliku. Następnie podczas edycji pliku vim zapisuje pliki wymiany i przechowuje cofanie drzew (historia cofania w vimie rozgałęzia się, nie jest liniowa, jak w każdym (?) Innym edytorze) i stale ocenia podświetlanie składni wraz ze zmianami tekstu itp.Nic z tego niekoniecznie uzasadnia, dlaczego musi być tak bezużyteczne w przypadku gigantycznych plików, ale jest raczej wyjaśnieniem niektórych powodów, dla których tak jest.
źródło
Vim nie tylko ładuje plik „tak jak jest” do pamięci. Konwertuje go na struktury wewnętrzne (linie, słowa itp.), Dokonuje podświetlania składni za pomocą wewnętrznego języka skryptowego i tak dalej; z których wszystkie zajmują pamięć (o wiele więcej niż bajt dla postaci) i czas procesora.
źródło
Możesz spróbować załadować go jako plik binarny. Miałem to szczęście w przypadku naprawdę dużych plików nietekstowych
IIRC może również używać vima jako edytora szesnastkowego patrz: http://usevim.com/2012/06/20/vim-binary-files/
źródło
Mamy nadzieję, że twój problem dotyczy bardziej plików VIM potrzebnych do plików tymczasowych (takich jak wymiana), a nie pamięci RAM.
W wielu przypadkach pliki tymczasowe utworzone przez VIM znajdują się w tym samym katalogu, który otwierasz. Jeśli tak jest w Twoim przypadku, możesz to sprawdzić, sprawdzając dostępne miejsce na dysku w bieżącym katalogu.
Na szczęście istnieje dobra dokumentacja na temat tego, jak określić inną lokalizację plików indeksowania / wymiany VIM:
Możesz także wyłączyć plik wymiany
źródło
Czasami otwieram duże kopie zapasowe bazy danych w formacie tekstowym .sql. Bardzo duże pliki lub pliki z bardzo długimi liniami często wydają się długo otwierać w vimie. Może to być związane z przetwarzaniem składni i podświetlaniem kolorów, jak wspomniano w odpowiedziach @zzapper i @demonkoryu.
Szybkim obejściem może być naciśnięcie „control-G” podczas ładowania pliku, aby anulować wstępne przetwarzanie podświetlania składni.
źródło