2008-09-19 14 views
85

Quiero buscar $maximumTotalAllowedAfterFinish y reemplazarlo por $minimumTotalAllowedAfterFinish. En lugar de escribir el texto largo:En Vim, ¿hay alguna manera de pegar texto en la línea de búsqueda?

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g 

¿Hay alguna forma de copiar estos nombres largos de variable hacia abajo en la línea de búsqueda, ya que, en la línea de comandos no puedo escribir "p" para pegar?

+2

supongo que tou también tienen que escapar de la primera '' $ porque este caracter significa el final de la línea. –

+1

@LucM El PO también podría usar '\ V' en cualquier parte del patrón de búsqueda para desactivar caracteres "mágicas". –

Respuesta

102

Puede insertar el contenido de un registro numerado o denominación escribiendo CTRLR{0-9a-z"%#:-=.}. Al escribir CTRL-RCTRL-W puede pegar la palabra actual bajo el cursor. Ver:

:he cmdline-editing 

para obtener más información.

+5

gracias por responder, la más común para mí es: 'CTRL' +' R' '+' (como va para el contenido del portapapeles) –

+0

El registro '0' contiene el último- cuerda tirada. –

13

Escriba q: para entrar en modo de edición de historial en un nuevo búfer. Luego edite la última línea del búfer y presione Enter para ejecutarlo.

+1

¡Así que para eso era ese buffer! Gracias (siempre me acaba de pasar a tropezar en él al escribir: q y confundirse) – gsk

+1

'q /' también es útil para acceder al historial de búsqueda y pegar nuevas búsquedas. – 79E09796

2

Normalmente, se hacer eso con la selección del ratón (quizás CtrlIns o CtrlC después de seleccionar) y luego, cuando se encuentra en la línea de comandos/búsqueda, el tercer botón (o ShiftIns o CtrlV).

Otra forma, es escribir la línea de comandos/búsqueda en el buffer de texto con toda la edición disponible en buffers de texto, a partir de : y todo, entonces, en la línea, hacer:

"[email protected] 

cuales almacenará toda la línea de comando en el buffer a, y luego lo ejecutará. Sin embargo, no se almacenará en el historial de comandos.

intente crear la siguiente línea en el búfer de texto como un ejemplo para las pulsaciones de las teclas anteriores:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g 

Por último, se puede introducir q: a entrar en la edición historia en un búfer de texto.

+0

+1 por mencionar el mouse –

40

copiarlo de forma normal, y luego hacer CtrlR" para pegar. Hay un montón de otros CtrlR accesos directos (por ejemplo, una calculadora, nombre de archivo actual, el contenido del portapapeles). Tipo :help c_<C-R> para ver la lista completa

3

O crear el comando en una memoria intermedia vim, por ejemplo, escribir en el buffer:.

s/foo/bar/gci 

Y cópielo en un registro con nombre, con "ayy (¡si el cursor está en esa línea!).

Ahora se puede ejecutar el contenido de la "a" se registra desde la línea de comandos de Vim con Ex:

:[OPTIONAL_RANGE]@a 

lo uso todo el tiempo.

+0

su "ayy" es citado (y por lo tanto incorrecto) o no (y por lo tanto hay un error "al final) – tzot

+0

Gracias por la corrección. –

6

Copia:
1) v (o resalte con el ratón, en modo visual)
2) y (tirón)

Pegar:
1) / (modo de búsqueda)
2) Ctrl + R + 0 (pegar desde el registro extraído)

+1

Estaba buscando esta respuesta cuando busqué esta pregunta en Google, se pregunta por qué esto tiene votos negativos. –

0

Puede colocar el cursor en la palabra que desea agregar a su patrón y luego presionar / o : para entrar en la búsqueda ni en el modo de comando y, a continuación, pulse Ctrl RCtrlW copiar la palabra. Source

Cuestiones relacionadas