En Vim, ¿hay alguna forma de pegar texto en la línea de búsqueda?


105

Quiero buscarlo $maximumTotalAllowedAfterFinishy reemplazarlo con $minimumTotalAllowedAfterFinish. En lugar de escribir el texto largo:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

¿Hay alguna manera de COPIAR estos nombres largos de variables en la línea de búsqueda, ya que, en la línea de comando, no puedo escribir " p" para pegar?


2
Supongo que también necesitas escapar del primero $porque este carácter significa el final de la línea.
Luc M

1
@LucM El OP también podría usar \Vcualquier parte del patrón de búsqueda para deshabilitar los caracteres "mágicos".
dash-tom-bang

Respuestas:


128

Puede insertar el contenido de un registro numerado o con nombre escribiendo CTRLR {0-9a-z"%#:-=.}. Al escribir CTRL-R CTRL-W, puede pegar la palabra actual debajo del cursor. Ver:

:he cmdline-editing

para más información.


8
gracias por la respuesta, la más común para mí es: CTRL+ R +(en lo que respecta al contenido del portapapeles)
Peter Butkovic

4
El 0registro contiene la última cadena extraída.
Evgeni Sergeev

52

Cópialo como de costumbre, luego hazlo CtrlR"para pegarlo. Hay muchos otros CtrlRatajos (por ejemplo, una calculadora, nombre de archivo actual, contenido del portapapeles). Escriba :help c_<C-R>para ver la lista completa.


16

Copiar:
1) v(o resaltar con el mouse, en modo visual)
2) y(tirón)

Pegar:
1) /(modo de búsqueda)
2) Ctrl + R + 0(pegar del registro tirado)


1
Estaba buscando esta respuesta cuando busqué esta pregunta en Google, me pregunto por qué esto tiene votos negativos.
santiago arizti

15

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


3
¡Así que para eso era ese búfer! Gracias (siempre me tropiezo con él al escribir: q y me confundo)
gsk

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

3

O cree el comando en un búfer vim, por ejemplo, escríbalo en el búfer:

s/foo/bar/gci

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

Ahora puede ejecutar el contenido del aregistro " " desde la línea de comando Ex de Vim con:

:[OPTIONAL_RANGE]@a

Lo uso todo el tiempo.


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

2

Por lo general, lo haría seleccionando con el mouse (quizás CtrlInso CtrlCdespués de seleccionar) y luego, cuando esté en la línea de comando / búsqueda, haciendo clic en el medio (o ShiftInso CtrlV).

Otra forma es escribir su línea de comando / búsqueda en el búfer de texto con todas las ediciones disponibles en búfer de texto, comenzando con :y todo, luego, en la línea, haga:

"add@a

que almacenará toda la línea de comando en el búfer ay luego la ejecutará. Sin embargo, no se almacenará en el historial de comandos.

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Finalmente, puede ingresar q:para ingresar a la edición del historial en un búfer de texto.


1

Puede colocar el cursor en la palabra que desea agregar a su patrón y luego presionar /o :para ingresar al modo de búsqueda o comando, y luego presionar CtrlRCtrlWpara copiar la palabra. Fuente

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.