2010-11-02 10 views
13

Me estoy sintiendo cada vez más cómodo con Vim después de unos meses. PERO, solo hay una característica simple que no puedo obtener ninguna respuesta de la web. Eso es "Buscar y reemplazar los resultados". El problema es que sé:Vim - Buscar y reemplazar los resultados

:/palabra clave para buscar, y pulsa enter "palabra clave" se pondrá de relieve (por supuesto con el conjunto hlsearch) n, o N para navegar

:% s/palabra clave/new_keyword/g para reemplazar todas las ocurrencias de palabra clave con new_keyword.

PERO, creo que debe haber una manera de buscar y reemplazar la palabra clave concordada (resaltada) con cualquier new_keyword SIN hacer ":% s/keyword/new_keyword/g", que es mucha escritura búsqueda & reemplazar es una característica del día a día.

Cualquier respuesta/comentario será muy apreciada!

Respuesta

27

Si ya ha hecho una búsqueda, puede hacer una sustitución por el mismo patrón simplemente omitiendo el patrón en el comando de sustitución. por ejemplo:

/keyword 

busque por "palabra clave", y luego:

:%s//new_keyword/g 

reemplazará todas las apariciones de "palabra clave" con "new_keyword".

+1

No sabía de eso, muy útil. – meagar

+1

Bueno, lo primero que agregué a mi lista de 'sabiduría vim' hace tiempo. – Stew

+0

Gracias Laurence, es lo que EXACTAMENTE quería, y no soy un usuario de Vim más feliz :) ¡Salud! – Khiet

3

Buscar y usar el comando dot (no quise decir que está utilizando el comando dot, por eso lo destaco) para repetir la última acción de entrada es mi mejor opción aquí.

Uso s /// g para buscar y reemplazar.

+0

Gracias Ronny, no como una solución general eficiente para mí PERO me recuerda a un comando importante de Vim ".". ¡¡¡Aclamaciones!!! – Khiet

+0

¡Es EL comando más importante! –

1

Mover a la primera palabra resaltada a continuación, grabar una macro para la sustitución de la palabra y pasar a la siguiente, por ejemplo:

 
gg 
n 
qq 
caw new_word^[ 
n 
q 
@q 
@@ 
@@ 
... 
+0

Eso es * infierno * mucho más tipeo que simplemente volver a escribir la palabra clave en ':% s /.../.../ g' – meagar

+0

@meagar: cierto, pero la pregunta no era cómo hacerlo en el Menos pulsaciones de teclas, solo cómo hacerlo sin:% s – Cercerilla

+0

@meagar: no cuando puede presionar '.' para seguir haciendo lo mismo otra vez. –

2

Bueno, ya # palabra clave # y # new_keyword # representan la mayor parte de los personajes , y necesita alguna forma de diferenciarlos (es decir, un personaje en vim, o una pestaña entre los campos de entrada en el diálogo en un editor diferente), le quedan unas cuatro o cinco teclas más allá de eso.

Creo que probablemente estés sobreestimando el número de teclas y olvidando que (1) es muy natural y (2) trabajar de esta manera también permite modificar de forma natural la acción realizada especificando un rango u opción diferente bandera.

Pero puede reducir las pulsaciones de teclas. Si lo desea, puede asignar una clave para que aparezca automáticamente la línea de comando con '% s /' en su lugar. ej .:

nmap s :%s/ 

El comando anterior sería reasignar 's' (no estoy recomendando reasignación a esa tecla, pero da la idea) y estará listo para insertar la palabra clave.

Además, puede configurar la opción 'gdefault' para cambiar varias veces por línea por defecto. Esto le permite saltar la terminación '/ g' en las pulsaciones del teclado:

set gdefault 

Ver ': h gdefault' para la sección de ayuda en esa opción.

Al final, diría que simplemente te acostumbras a la manera predeterminada, porque usarlo de esa manera te permite mantener la misma operación básica cuando quieres especificar diferentes rangos o banderas de opciones, y crear un nuevo mapa especial es solo otra cosa para recordar. Es posible que valga la pena configurar gdefault si cree que va a quererlo la mayoría del tiempo, agregando/g indicador al final cuando gdefault está configurado tiene un efecto de activar/desactivar. . .

+0

Muchas gracias Herbert, mucha información útil y consejos. Especialmente, encuentro el conjunto de gdefault, y/g para desarmarlo de forma dinámica es hermoso y no lo sabría. ¡¡¡Aclamaciones!!! – Khiet

Cuestiones relacionadas