Co się stanie, jeśli użyję vi na dużych plikach?

16

Chociaż otrzymaliśmy polecenie, aby tego nie robić, mój kolega użył vi, aby wyświetlić duży plik tekstowy (server.log 3,5 GB). To wypełniło / var / tmp i spowodowało pewne problemy na serwerze.

Co to spowodowało? Dlaczego nie powinniśmy używać vi do dużych plików?

atripathi
źródło
3
vi(lub vimw tym przypadku) jest cholernie powolny w przypadku dużych plików i może być nawet bezużyteczny, jeśli nie ma wielu końców linii. Ponadto plik musi zmieścić się w pamięci. Użyj lessdo dużych plików, jest znacznie szybszy i często wystarczający do odczytu / oglądania plików dziennika.
Marco,
@Marco Dlaczego nie podać tego jako odpowiedzi?
Bernhard,
1
ponieważ nie jest to odpowiedź na pytanie, ale komentarz, pytanie brzmi: „Co to spowodowało? Dlaczego nie powinniśmy używać vi do dużych plików?”
Kiwy,
spójrz na komentarz z moją odpowiedzią.
rɑːdʒɑ

Odpowiedzi:

7

Domyślny katalog (/ var / tmp) dla bufora edycji vi potrzebuje miejsca równego w przybliżeniu dwa razy większemu rozmiarowi pliku, z którym pracujesz, ponieważ vi używa dodatkowych linii do manipulowania buforem.

Jeśli w katalogu / var / tmp nie ma wystarczającej ilości miejsca na bufor edycji (np. Pracujesz z dużym plikiem lub w systemie brakuje miejsca

czasami możesz otrzymać następujący komunikat o błędzie, taki jak ten

Not enough space in /var/tmp.

O tym, jak to naprawić, możesz przeczytać tutaj: http://kb.iu.edu/data/akqv.html

rɑːdʒɑ
źródło
„bufor edycji vi potrzebuje miejsca równego z grubsza dwukrotnie wielkości pliku, z którym pracujesz” Źródło?
atripathi
1
dawno temu czytałem z kb.iu.edu/data/akqv.html . więc dałem ci to
2013
20

Vim nie został zaprojektowany dla dużych plików. Ma pewne funkcje, które drastycznie spowalniają wrażenia użytkownika. Na przykład ładuje plik do pamięci, co zasadniczo ogranicza edycję plików mniejszych niż rozmiar pamięci. Ponadto funkcje takie jak podświetlanie składni, zamiana plików i cofanie są bardzo nieefektywne w przypadku dużych plików i jeszcze bardziej spowalniają działanie. Innym problemem jest to, vimże nie oczekuje on zbyt długich linii. Jeśli plik zawiera kilka znaków nowego wiersza, vimstaje się bezużyteczny.

To powiedziawszy, istnieją wtyczki, takie jak vim-largefile, które zmieniają określone ustawienia, aby były bardziej wydajne w przypadku dużych plików, ale ostatecznie vimnigdy nie będzie fajne, jeśli rzucisz na niego kilka GiB.

Najważniejsze jest to, że nie używaj vimdużych plików. Jeśli chcesz wyświetlić (w przeciwieństwie do edycji) duże pliki, użyj less. Jeśli chcesz wyszukać wzór, użyj ukośnika, aby rozpocząć wyszukiwanie wzoru:

/<pattern>  # forward search
?<pattern>  # backward search

Jeśli chcesz filtrować wyjście, użyj znaku handlowego i:

&<pattern>

Następnie uruchom ciągłe wyjście za pomocą shift-f. Możesz wyjść z ciągłego wyświetlania danych wyjściowych za pomocą ctrl-ci udoskonalić lub anulować wzorzec filtra lub rozpocząć wyszukiwanie.

Aby edytować duże pliki, użyj narzędzi takich jak sed, są wydajne i zaprojektowane do tego właśnie celu.

Marco
źródło