Me gustaría optimizar mi flujo de trabajo "buscar y reemplazar" en Vim. Es algo que hago a menudo, como estoy seguro de que la mayoría de ustedes también. Por lo general, algo similar a: copiar un bloque y cambiar el nombre de una variable en algunos lugares. Lo sé, lo sé, eso probablemente desencadena tu reflejo de "por qué estás copiando y pegando código", pero no sigamos ese camino ... Hay muchos casos de uso válidos :)
Soy muy consciente de los comandos de búsqueda y reemplazo: :s
o :%s
pero no me gustan. Me obliga a escribir tanto el nombre de variable completo que estoy buscando como a qué lo estoy cambiando. ¿Quizás hay una mejor manera de arreglar la cantidad de tipeo :%s
? A menudo utilizo nombres de variables descriptivos largos, por lo que es realmente un factor decisivo para mí. Tampoco me gusta cómo escribir un nombre de variable desde cero es propenso a los errores tipográficos y puede consumir tiempo y poder intelectual buscando errores tipográficos. Prefiero escribirlo una vez, y luego copiar y pegar para evitar esto por completo si es posible.
Mi flujo de trabajo actual utiliza alguna combinación de movimiento / tirón / selección / búsqueda / colocación para moverse por el archivo y reemplazar uno por uno. No es genial, pero tiene la ventaja de evitar escribir nombres de variables completos. Es posible que solo necesite escribir las primeras letras con /
o usar otro comando de movimiento (por ejemplo fx
) dependiendo de lo que esté alrededor y luego presionar ve
para seleccionar la palabra completa. Tampoco me importa que tenga que repetir para cada instancia. Nunca hago un reemplazo completo sin confirmar cada cambio. Pero sería mucho mejor si pudiera repetir la acción de reemplazo con una sola pulsación de tecla (que no puedo hacer con este método). cada sustitución es generalmente algo como n
continuación ve
a continuación p
(o incluso peor "0p
)
¿Hay una manera mas rápida?
n
ve
"0p
. Que desafortunadamente no se puede replicar con solo un.
n ce ctrl-r 0 <esc> n.n.n.n.n.n.
.
repite el último "bloque de comandos" (no estoy seguro del término exacto. por ejemplo: mover + acción + texto. por ejemplo:cwtoto<Esc>
(cambiar del cursor al final de la palabra con "toto"),c/foo<enter>bar<Esc>
(cambiar del cursor a justo antes " foo ", y reemplazar con" barra "). A continuación, puede mover (con el cursor, hjkl o un número + hjkl (lo hace n veces), G (ir al final del archivo), / algo (ir justo antes" algo "), etc.) y luego presione.
para rehacer el mismo" bloque de comandos "