2009-02-03 23 views

Respuesta

357

Añadir la bandera c (en el símbolo del sistema vim):

:%s/old/new/gc 

le dará un sí/no rápido en cada aparición de 'viejo'.

ayuda incorporada de Vim ofrece información útil sobre las opciones disponibles una vez que la sustitución con la confirmación ha sido seleccionado. Use:

:h :s 

Luego, vaya a la sección sobre opciones de confirmación. Pantalla de abajo:

enter image description here

Por ejemplo, para sustituir este y todos los partidos restantes, utilice a.

+25

+1, ¡aprendí algo nuevo hoy! Vim tiene tantos secretos ocultos .. :) –

+0

¡De hecho! No sabía sobre el modificador c. – strager

+9

Aprender comandos vim es un poco como jugar Nethack. Nunca se sabe qué maravillas va a contener un solo personaje. –

8

por lo general uso el sustituto siguiente comando find///repetición :-)

/old<CR>3snew<ESC>n.n.n.n.n.n.n. 

Eso es find "old", substitute 3 characters for "new", find next, repeat substitute, y así sucesivamente.

Es un dolor para las sustituciones masivas, pero le permite ignorar selectivamente algunas ocurrencias antiguas (simplemente presionando n nuevamente para encontrar la siguiente en lugar de . para repetir una sustitución).

+0

Uso esto también, incluso para textos similares. (3cW .. .) – strager

+1

¡No es un antipatrón! Es dulce. Y puede buscar en la dirección opuesta usando N. Realmente es bueno si ve una palabra y desea cambiarla. * cwNewText N.n.n. (Esto saltará de la palabra debajo del cursor, pero luego saltará de nuevo cuando haya cambiado la siguiente ocurrencia. – PEZ

+0

¿Qué es '?? – Sother

17

Creo que está buscando c, por ejemplo s/abc/123/gc, esto hará que VIM confirme los reemplazos. Ver: ayuda: sustituir por más información.

9

Si solo desea contar el número de apariciones de 'abc', puede hacer %s/abc//gn. Esto no reemplaza nada, solo informa el número de apariciones de 'abc'.

56

Marcos Biek señaló usando:

%s/old/new/gc 

para sustituir a una búsqueda global con la confirmación de cada sustitución. Pero también disfruto verificar de forma interactiva que el texto antiguo coincidirá correctamente. La primera vez que hago una búsqueda con una expresión regular, entonces volver a usar su patrón:

/old.pattern.to.match 
%s//replacement/gc 

El s// utilizará el último patrón de búsqueda.

+6

¡Una de las mejores cosas sobre usar/aprender vim es qué tan profundo va el agujero del conejo! – ken

+1

Bien, siempre estaba haciendo la búsqueda, luego usando /para pegar la última búsqueda en el comando de sustitución. –

+0

¡Exactamente lo que extraño de Sublime Text! – Xenofex

2

Si el texto de reemplazo necesita cambio para cada ocurrencia emparejado (es decir, no sólo elegir Sí/No para solicitar un reemplazo singular) se puede utilizar un plugin Vim que hice llamado interactive-replace.