C'è un modo per sostituire tutte le occorrenze di una stringa nei file in Vim utilizzando una combinazione di args and argdo commands. Sfortunatamente c'è un inconveniente con questa soluzione: aprirà tutti i file che potrebbero essere un problema per i progetti di grandi dimensioni. Qualcuno sa più compatto ed efficiente in termini di memoria?Vim: trova e sostituisci un progetto di grandi dimensioni?
risposta
find projectfolder -type f -exec grep -Iq 'pattern' {} \; -exec vim {} +
C'è un piccolo problema con questa soluzione: 'Vim: Attenzione: l'input non proviene da un terminale' che risulta in una console rotta dopo aver smesso di vim. Il motivo è che xargs esegue i suoi comandi argomento in un ambiente in cui l'input standard non è il terminale dell'utente. Quindi suggerirei qualcosa del modulo: 'find projectfolder -type f -exec grep -Iq 'pattern' {} \; -print | xargs sh -c ' dev/tty vim $ *' ' – nab
@nab Buon punto. Dopo alcuni test, ho trovato (sorprendentemente, almeno per me) che cambiando '-print0 | xargs ... 'per' -exec ... + 'ha funzionato. In realtà ha un senso, 'find' da solo non legge lo stdin così i suoi bambini possono. È la prima differenza funzionale tra i due che ho visto. – Kevin
Ecco come lo faccio (quando non sto usando perl
):
find . -name '*.java' -exec vim +'%s/OldName/NewName/gc' +'wq' {} \;
cioè sostituire "VecchioNome" con "NewName" in tutti "* .java" file, ma mi chiede conferma per conferma per ogni sostituzione.
- 1. Trova e sostituisci in un file di grandi dimensioni
- 2. XCode Trova e sostituisci tutti i file di progetto
- 3. Perché Anteprima pulsanti disabili/Sostituisci in Trova & Sostituisci nel progetto
- 4. Trova stringhe duplicate in un file di grandi dimensioni
- 5. Trova e sostituisci stringa in un file
- 6. String Trova e sostituisci metodo
- 7. Trova e sostituisci più file
- 8. Trova e sostituisci con JavaScript
- 9. Best practice per un singolo progetto SVN di grandi dimensioni
- 10. Trova e sostituisci script di shell
- 11. Trova e sostituisci per un'area di testo
- 12. Trova e sostituisci più valori in python
- 13. Vim - Cerca e sostituisci i risultati
- 14. Sostituisci dati crossfilter, ripristina dimensioni e gruppi
- 15. Trova e sostituisci file non riesce
- 16. Trova/Sostituisci usando grep e TextWrangler
- 17. Trova e sostituisci stringa nel parametro bash
- 18. Immagini di sfondo di grandi dimensioni e dimensioni dello schermo
- 19. Visual Studio, Trova e sostituisci, regex
- 20. Sed Trova e sostituisci con parentesi graffe
- 21. Trova e sostituisci stringa HTML con jQuery
- 22. Chrome Web Inspector: Trova e sostituisci
- 23. PHP readfile() e download di grandi dimensioni
- 24. File di grandi dimensioni e hashing - preoccupazione
- 25. Trova e sostituisci parole/righe in un file
- 26. Trova e sostituisci con un carattere jolly in Xcode 4
- 27. È possibile utilizzare Trova e sostituisci su una stringa jolly in VIM?
- 28. Git - la spinta di un ramo remoto per un progetto di grandi dimensioni è molto lenta
- 29. Applicazione Java Enterprise di grandi dimensioni - Modularizzazione
- 30. File JSON di grandi dimensioni
Devi usare vim? Userei sed, è uno strumento migliore per il lavoro. –
@GregHewgill Mi piacerebbe avere la possibilità di confermare una particolare modifica come il flag 'gc' in Vim regexp. L'uso di 'sed -i' sembra un po 'pericoloso per me. – nab
Se si osservano comunque tutte le modifiche, utilizzare sed e quindi controllare la differenza risultante. –