En vim, a menudo realizo búsquedas para saltar a una palabra o frase en lugar de navegar allí con h/j/k/l
. Luego presiono n
para saltar entre ocurrencias.
Digamos que tengo este texto:
Time flies like an arrow; fruit flies like a banana. - Groucho Marx
Escribo /an arrow
y presiono enter. Esa frase está resaltada y salto a ella con n
.
ahora quieroseleccione visualmente ese texto, tal vez para cambiarlo o eliminarlo. (Sí, conozco el :s
comando de sustitución).
Como mi cursor está en la letra "a" al principio de "una flecha", puedo presionar v
y luego presionar e
un par de veces para resaltar la frase completa. Pero tengo la sensación de que hay una forma más corta y semántica. Después de todo, ya he especificado el texto que me interesa.
¿Cómo podría redactar un comando para decir"¿Seleccionar visualmente la selección de búsqueda actual?"
Respuesta1
Se puede utilizar gn
en la versión 7.4 en adelante (y gN
para retroceder). Reemplaza el v//e
truco.
Busque hacia adelante el último patrón de búsqueda utilizado, como con `n`, e inicie el modo Visual para seleccionar la coincidencia.
ver :help gn
oeste Vimcastpara más información.
Respuesta2
Prueba esto:
/an arrow
v//e
Entra en modo visual, repite la última búsqueda y selecciona hasta el final.
Respuesta3
Descubrí que v//e
por sí solo es insuficiente porque después de salir del modo visual, saltar al resultado de búsqueda siguiente/anterior coloca el cursor al final del resultado, en lugar de al principio como normalmente se esperaría.
Para solucionar este problema, primero debemos saltar al final del resultado de la búsqueda ( //e
) y luego seleccionar visualmente su comienzo ( v??
):
" visually select a search result
nnoremap g/ //e<Enter>v??<Enter>
Salud.
Respuesta4
Una forma "más tonta" de hacerlo es asignar una tecla (en este caso F5) como se muestra a continuación:
nnoremap <F5> v/<c-r>=strpart(@/,1) . '/e+1'<CR><CR>
Después de /an arrow
presionar F5.