Cosa succede se utilizzo vi su file di grandi dimensioni?


16

Anche se ci è stato chiesto di non farlo, un mio collega ha usato vi per visualizzare un file di testo di grandi dimensioni (server.log 3,5 GB). Questo ha riempito / var / tmp e ha causato alcuni problemi sul server.

Cosa l'ha causato? Perché non dovremmo usare vi per file di grandi dimensioni?


3
vi(o del vimresto) è dannatamente lento su file di grandi dimensioni e può anche essere inutilizzabile se non ci sono molte estremità di linea. Inoltre, il file deve adattarsi alla memoria. Utilizzare lessper file di grandi dimensioni, è molto più veloce e spesso sufficiente per leggere / guardare i file di registro.
Marco,

@Marco Perché non metterlo come risposta?
Bernhard

1
perché non è la risposta alla domanda, ma un commento, il quesiton è "Cosa ha causato questo? Perché non dovremmo usare vi per file di grandi dimensioni?"
Kiwy,

guarda un commento con la mia risposta.
rʒɑdʒɑ

Risposte:


7

La directory predefinita (/ var / tmp) per il buffer di modifica vi richiede uno spazio pari a circa il doppio della dimensione del file con cui si sta lavorando, perché vi utilizza le righe extra per la manipolazione del buffer.

Se la directory / var / tmp non ha abbastanza spazio per il buffer di modifica (ad esempio, si sta lavorando con un file di grandi dimensioni o il sistema sta esaurendo lo spazio

alcune volte potresti ricevere, riceverai anche il seguente messaggio di errore come questo

Not enough space in /var/tmp.

Puoi leggere come risolverlo qui: http://kb.iu.edu/data/akqv.html


"Il buffer di modifica di vi richiede uno spazio pari a circa il doppio della dimensione del file con cui stai lavorando" Sorgente?
Atripathi,

1
molto tempo fa ho letto da kb.iu.edu/data/akqv.html . così te l'ho dato io
1313

20

Vim non è stato progettato per file di grandi dimensioni. Ha alcune funzionalità che rallentano drasticamente l'esperienza dell'utente. Ad esempio, carica il file in memoria, il che sostanzialmente limita la modifica di file più piccoli delle dimensioni della memoria. Inoltre, funzionalità come l'evidenziazione della sintassi, il file di scambio e l'annullamento sono molto inefficienti con file di grandi dimensioni e rallentano ancora di più. Un altro problema è che vimprevede linee non troppo lunghe. Se un file contiene pochi caratteri di nuova riga vimdiventa inutilizzabile.

Detto questo, ci sono plugin come vim-largefile che cambiano impostazioni particolari per essere più efficienti con file di grandi dimensioni, ma alla fine vimnon saranno mai scattanti quando ci lanci diversi GiB.

La linea di fondo è, non utilizzare vimsu file di grandi dimensioni. Se si desidera visualizzare (al contrario per modificare) file di grandi dimensioni, utilizzare less. Se vuoi cercare una sequenza, usa una barra per iniziare una ricerca una sequenza:

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

Se vuoi filtrare l'uscita usa una e commerciale:

&<pattern>

Quindi avviare l'uscita continua usando shift-f. È possibile uscire dalla visualizzazione dell'uscita continua con ctrl-ce perfezionare o annullare il modello di filtro o avviare una ricerca.

Per modificare file di grandi dimensioni utilizzare strumenti come sed, sono efficienti e progettati proprio per questo scopo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.