2011-04-04 20 views
55

Si presiona * en Vim, el editor buscará la siguiente aparición del término en el mismo archivo. Le ahorra tener que escribir el término.En Vim, reemplace todas las ocurrencias del término actual bajo el cursor

¿Hay alguna manera rápida de reemplazar el término actual bajo el cursor por uno nuevo? Un caracter para emitir el comando, escribiendo el nuevo término, luego Ingrese.

+0

También puede utilizar ** N ** ** para el próximo partido ** , y ** b ** para ** partido de regreso ** (previo). – Orwellophile

+0

@Orwellophile solo 'n' funciona para mí' b' vuelve al valor predeterminado (principio de la palabra) '#' funciona para mí como se esperaba, que se remonta al término anterior. – JohnnyQ

+0

@JohnnyQ lo siento Johnny, debo haber estado drogado. es 'n' para el próximo y' N' para el anterior. Está escrito en mi teclado, así que no sé cómo lo hice mal. – Orwellophile

Respuesta

50

Se puede utilizar:

:%s/<c-r><c-w>/new value/g 

donde <c-r><c-w> significa que escribir literalmente CTRL - rCTRL - w para insertar la palabra bajo el cursor.

+0

gracias johnny, corregido. – skeept

88

Sólo tiene que utilizar * y luego:

:%s//new value/ 

Si no se especifica un patrón, el comando sustituto utiliza la última búsqueda realizada en uno. Dependiendo del valor de gdefault en su configuración, puede que necesite agregar un modificador /g a ese comando.

+3

Y si 'new value' contiene un' & 'o un'/', solo escapéalo con' \\ '. – Benoit

+1

+1 Justo lo que estaba buscando, también funciona en VsVim. – 79E09796

+0

': se gd' es una obviedad, una vez que lo sepa. – sjas

11

Además de las otras respuestas, puede restar más teclas al agregar el siguiente fragmento a su archivo .vimrc para realizar una búsqueda global y reemplazar.

" Search and replace word under cursor using F4 
nnoremap <F4> :%s/<c-r><c-w>/<c-r><c-w>/gc<c-f>$F/i 
+1

me encanta, la mejor respuesta en Internet para mí hasta ahora;) – Hoto

+0

realmente, el mejor enfoque, gracias! – korst1k

Cuestiones relacionadas