Hay una manera de reemplazar todas las ocurrencias de una cadena en archivos en Vim usando una combinación de args and argdo commands. Lamentablemente, hay una desventaja con esta solución: abrirá todos los archivos que pueden ser un problema para proyectos grandes. ¿Alguien sabe de forma más compacta y eficiente de memoria?Vim: ¿Buscar y reemplazar en un proyecto grande?
Respuesta
find projectfolder -type f -exec grep -Iq 'pattern' {} \; -exec vim {} +
Hay un pequeño problema con esta solución: 'Vim: Advertencia: la entrada no proviene de un terminal', lo que da como resultado una consola descompuesta después de salir de vim. El motivo es que xargs ejecuta sus comandos de argumento en un entorno en el que la entrada estándar no es el terminal del usuario. Así que sugeriría algo de la forma: 'find projectfolder -type f -exec grep -Iq 'pattern' {} \; -print | xargs sh -c ' dev/tty vim $ *' ' – nab
@nab Buen punto. Después de algunas pruebas, encontré (sorprendentemente, al menos para mí) que cambiar el '-print0 | xargs ... 'to' -exec ... + 'trabajado. En realidad tiene algún sentido, 'find' solo no lee stdin para que sus hijos puedan. Es la primera diferencia funcional entre los dos que he visto. – Kevin
Así es como lo hago (cuando no estoy usando perl
):
find . -name '*.java' -exec vim +'%s/OldName/NewName/gc' +'wq' {} \;
es decir, reemplazar "OldName" con "NuevoNombre" en todos los "* .java" archivos, pero me impulsan para la confirmación de cada sustitución.
- 1. Buscar y reemplazar en un archivo grande
- 2. Vim Buscar y reemplazar Eficiencia
- 3. vim: buscar y reemplazar por "&"
- 4. Buscar y reemplazar palabras completas en vim
- 5. Vim - Buscar y reemplazar los resultados
- 6. En vim buscar y reemplazar, newline se representa como "^ @"
- 7. buscar y reemplazar cadena en un archivo
- 8. Buscar y reemplazar expresiones regulares en línea
- 9. patrón encontrado en vim search, pero no en vim buscar y reemplazar?
- 10. Buscar y reemplazar jQuery
- 11. Linux buscar y reemplazar
- 12. ¿Cómo puedo buscar y reemplazar recursivamente en un directorio en Vim?
- 13. Buscar y reemplazar en una gama de línea y columna
- 14. /in vi ¿Buscar y reemplazar?
- 15. ¿Cómo mides un proyecto pequeño, grande y muy grande?
- 16. Nueva caja Buscar y reemplazar
- 17. unix tr buscar y reemplazar
- 18. buscar y reemplazar la cadena
- 19. Buscar y reemplazar con JavaScript
- 20. Jquery: buscar y reemplazar texto
- 21. copia vim y reemplazar texto
- 22. Buscar y reemplazar en scripts de shell
- 23. Buscar y reemplazar en archivos falla
- 24. Buscar y reemplazar en varios archivos
- 25. Buscar y reemplazar palabras en HTML
- 26. VIM: cómo agregar el comando buscar/reemplazar a vimrc y asignar a un acceso directo
- 27. Buscar cadenas duplicadas en un archivo grande
- 28. Método más rápido de Python para buscar y reemplazar en una cadena grande
- 29. Buscar y reemplazar en HTML con BeautifulSoup
- 30. Caret buscar y reemplazar en Bash shell
¿Debe usar vim? Usaría sed, es una herramienta mejor para el trabajo. –
@GregHewgill Me gustaría tener la oportunidad de confirmar un cambio en particular, como la bandera 'gc' en Vim regexp. Solo usar 'sed -i' me parece un poco peligroso. – nab
Si va a ver todos los cambios de todos modos, use sed e inspeccione la diferencia resultante. –