Czy są jakieś edytory, które mogą edytować wielogigabajtowe pliki tekstowe, na przykład ładując tylko małe porcje do pamięci na raz? Nie wygląda na to, żeby Vim sobie z tym poradził = (
Czy są jakieś edytory, które mogą edytować wielogigabajtowe pliki tekstowe, na przykład ładując tylko małe porcje do pamięci na raz? Nie wygląda na to, żeby Vim sobie z tym poradził = (
Odpowiedzi:
Jeśli jesteś na * nix (i zakładając, że masz do modyfikacji tylko części pliku (i rzadko)), można podzielić pliki (za pomocą split
poleceń), edytować je pojedynczo (za pomocą awk
, sed
lub coś podobnego) i łączyć je po ciebie są skończone.
cat file2 file3 >> file1
Ctrl-C zatrzyma ładowanie pliku. Jeśli plik jest wystarczająco mały, być może miałeś szczęście, że załadowałeś całą zawartość i po prostu zabiłeś wszystkie kroki po załadowaniu. Sprawdź, czy cały plik został załadowany podczas korzystania z tej wskazówki.
Vim całkiem dobrze radzi sobie z dużymi plikami. Właśnie wyedytowałem plik 3,4 GB, usuwając wiersze itp. Trzy rzeczy, o których należy pamiętać:
:115355
przeniesie Cię bezpośrednio do wiersza 115355, który jest znacznie szybszy w przypadku dużych plików. Vim wydaje się zaczynać skanowanie od początku za każdym razem, gdy ładuje bufor linii, a przytrzymanie Ctrl-F w celu przeskanowania pliku wydaje się działać bardzo wolno pod koniec.Uwaga - Jeśli twoja instancja Vima jest w trybie tylko do odczytu, ponieważ wcisnąłeś Ctrl-C, możliwe, że Vim nie załadował całego pliku do bufora. Jeśli tak się stanie, zapisanie go zapisze tylko to, co jest w buforze, a nie cały plik . Możesz szybko sprawdzić za pomocą a, G
aby przejść do końca, aby upewnić się, że wszystkie wiersze w pliku tam są.
Mogą to być wtyczki, które powodują jego dławienie. (podświetlanie składni, fałdy itp.)
Możesz uruchomić vima bez wtyczek.
vim -u "NONE" hugefile.log
Jest minimalistyczny, ale przynajmniej da ci ruchy vi, do których jesteś przyzwyczajony.
syntax off
jest kolejnym oczywistym. Usuń instalację i pobierz to, czego potrzebujesz. Dowiesz się, do czego jest zdolny i czy musisz wykonać zadanie w inny sposób.
Nieznaczne ulepszenie odpowiedzi udzielonej przez @Al pachio dzięki rozwiązaniu split + vim możesz wczytywać pliki za pomocą globu, efektywnie wykorzystując fragmenty plików jako bufor, np.
$ split -l 5000 myBigFile
xaa
xab
xac
...
$ vim xa*
#edit the files
:nw #skip forward and write
:n! #skip forward and don't save
:Nw #skip back and write
:N! #skip back and don't save
Możesz chcieć sprawdzić tę wtyczkę VIM, która wyłącza niektóre funkcje VIM w interesie szybkości podczas ładowania dużych plików.
Próbowałem to zrobić, głównie z plikami o wielkości około 1 GB, kiedy musiałem wprowadzić małą zmianę w zrzucie SQL. Korzystam z systemu Windows, co sprawia, że jest to poważny problem. To naprawdę trudne.
Oczywiste pytanie brzmi: „dlaczego musisz?” Z doświadczenia mogę ci powiedzieć, że próbujesz tego więcej niż raz, prawdopodobnie naprawdę chcesz spróbować znaleźć inny sposób.
Jak więc to robisz? Zrobiłem to na kilka sposobów. Czasami mogę uzyskać vim lub nano, aby otworzyć plik i mogę ich użyć. To naprawdę ciężki ból, ale działa.
Jeśli to nie zadziała (jak w twoim przypadku), masz tylko kilka opcji. Możesz napisać mały program, aby wprowadzić potrzebne zmiany (na przykład wyszukaj i zamień). Możesz użyć programu wiersza poleceń, który może to zrobić (może można to zrobić za pomocą sed / awk / grep / etc?)
Jeśli to nie zadziała, zawsze możesz podzielić plik na części (coś takiego jak split jest oczywistym wyborem, ale możesz użyć nagłówka / ogona, aby uzyskać żądaną część), a następnie edytować części, które tego potrzebują, i połączyć ponownie później.
Zaufaj mi jednak, spróbuj znaleźć inny sposób.
Używam vim 7.3.3 na Win7 x64 z wtyczką LargeFile autorstwa Charlesa Campbella do obsługi wielogigabajtowych zwykłych plików tekstowych. Działa naprawdę dobrze.
Mam nadzieję, że dobrze przyjdziesz.
Wow, nigdy nie udało mi się zmusić Vima do dławienia się, nawet z GB lub dwoma. Słyszałem, że UltraEdit (w systemie Windows) i BBEdit (na komputerach Mac) są jeszcze bardziej odpowiednie dla jeszcze większych plików, ale nie mam osobistego doświadczenia.
W przeszłości otworzyłem plik z 3 koncertami za pomocą tego narzędzia http://csved.sjfrancke.nl/
Osobiście lubię UltraEdit . Oto ich mała gadka o dużych plikach .
Jedyne, czego udało mi się użyć do czegoś takiego, to mój ulubiony edytor szesnastkowy na Maca, 0XED. Jednak dotyczyło to plików, które uważałem za duże i zajmowały dziesiątki megabajtów. Nie jestem pewien, jak daleko to zajdzie. Jestem jednak prawie pewien, że jednocześnie ładuje tylko części pliku do pamięci.