Esistono editor in grado di modificare file di testo multi-gigabyte, magari caricando solo piccole porzioni in memoria contemporaneamente? Non sembra che Vim possa gestirlo = (
Esistono editor in grado di modificare file di testo multi-gigabyte, magari caricando solo piccole porzioni in memoria contemporaneamente? Non sembra che Vim possa gestirlo = (
Risposte:
Se siete su * nix (e supponendo che è necessario modificare solo alcune parti del file (e raramente)), è possibile dividere i file (utilizzando il split
comando), modificare individualmente (utilizzando awk
, sed
o qualcosa di simile) e concatenare dopo aver sono fatti.
cat file2 file3 >> file1
Ctrl-C interromperà il caricamento del file. Se il file è abbastanza piccolo potresti essere stato fortunato ad aver caricato tutti i contenuti e ad aver terminato tutti i passaggi di post caricamento. Verificare che l'intero file sia stato caricato quando si utilizza questo suggerimento.
Vim può gestire abbastanza bene file di grandi dimensioni. Ho appena modificato un file da 3,4 GB, cancellando righe, ecc. Tre cose da tenere a mente:
:115355
ti porterà direttamente alla riga 115355, che è molto più veloce in quei file di grandi dimensioni. Vim sembra iniziare la scansione dall'inizio ogni volta che carica un buffer di righe, e tenere premuto Ctrl-F per scansionare il file sembra diventare molto lento verso la fine.Nota - Se la tua istanza Vim è in sola lettura perché premi Ctrl-C, è possibile che Vim non abbia caricato l'intero file nel buffer. In tal caso, salvarlo salverà solo ciò che è nel buffer, non l'intero file . Puoi controllare rapidamente con a G
per saltare alla fine per assicurarti che tutte le righe nel tuo file siano lì.
Potrebbero essere i plugin a provocarne il soffocamento. (evidenziazione della sintassi, pieghe ecc.)
Puoi eseguire vim senza plugin.
vim -u "NONE" hugefile.log
È minimalista ma almeno ti darà i movimenti vi a cui sei abituato.
syntax off
è un altro ovvio. Riduci l'installazione e procurati ciò di cui hai bisogno. Scoprirai di cosa è capace e se devi portare a termine un'attività con altri mezzi.
Un leggero miglioramento rispetto alla risposta data da @Al pachio con la soluzione split + vim puoi leggere i file con un glob, utilizzando efficacemente blocchi di file come buffer ad es.
$ 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
Potresti voler controllare questo plugin VIM che disabilita alcune funzionalità di vim nell'interesse della velocità durante il caricamento di file di grandi dimensioni.
Ho provato a farlo, principalmente con file di circa 1 GB quando avevo bisogno di apportare alcune piccole modifiche a un dump SQL. Sono su Windows, il che lo rende un grosso problema. È seriamente difficile.
La domanda ovvia è "perché ne hai bisogno?" Posso dirti per esperienza che dovendo provare più di una volta, probabilmente vorrai davvero provare a trovare un altro modo.
Allora come si fa? Ci sono alcuni modi in cui l'ho fatto. A volte posso ottenere vim o nano per aprire il file e posso usarli. È un dolore davvero duro, ma funziona.
Quando non funziona (come nel tuo caso) hai solo poche opzioni. Puoi scrivere un programmino per apportare le modifiche necessarie (ad esempio, ricerca e sostituzione). Potresti usare un programma a riga di comando che potrebbe essere in grado di farlo (forse potrebbe essere realizzato con sed / awk / grep / ecc?)
Se quelli non funzionano, puoi sempre dividere il file in blocchi (qualcosa come la divisione è la scelta ovvia, ma potresti usare testa / coda per ottenere la parte che desideri) e quindi modificare le parti che ne hanno bisogno, e ricombinare più tardi.
Credimi però, prova a trovare un altro modo.
Sto usando vim 7.3.3 su Win7 x64 con il plugin LargeFile di Charles Campbell per gestire file di testo normale multi-gigabyte. Funziona davvero bene.
Spero tu abbia ragione.
Wow, non sono mai riuscito a far soffocare Vim, nemmeno con un GB o due. Ho sentito che UltraEdit (su Windows) e BBEdit (su Mac) sono ancora più adatti per file ancora più grandi, ma non ho esperienza personale.
In passato ho aperto un file da 3 giga con questo strumento http://csved.sjfrancke.nl/
Personalmente, mi piace UltraEdit . Ecco il loro piccolo discorso su file di grandi dimensioni .
L'unica cosa che sono stato in grado di usare per qualcosa del genere è il mio editor esadecimale per Mac preferito, 0XED. Tuttavia, era con file che consideravo grandi a decine di megabyte. Non sono sicuro di quanto lontano andrà. Sono abbastanza sicuro che carica solo parti del file in memoria contemporaneamente, però.