2012-02-19 12 views
11

No se puede encontrar la manera de seleccionar automáticamente una coincidencia de expresiones regulares en el modo visual.Vim: ¿comandos para seleccionar visualmente una coincidencia de expresiones regulares?

Por ejemplo, manualmente, podría buscar una palabra

/word 

Aterriza el cursor en el primer carácter de la "palabra" partido.
Luego presiono v para ingresar al modo Visual y presione llll para seleccionar la "palabra" completa.

Ahora quiero hacer esto por una macro, y no sé la duración del partido con anticipación.

Esperaba que Vim definiera automáticamente algunas marcas incorporadas al principio y al final de la coincidencia actual, para que yo pudiera `. Pero no pude encontrar ninguna información sobre eso.

Lo que quiero es reasignar Ctrl+n a una macro para llevarme a la siguiente coincidencia y seleccionarla en modo visual, es decir, no solo resaltar la coincidencia. (Para ser paralelo a la forma en n le lleva a la siguiente coincidencia.)

Si usted se pregunta por qué, es porque quiero crear pliegues en base a coincidencias de expresiones regulares (como Ctrl+n, zf), pero estoy seguro de que vendrá útil en otros casos también.

Respuesta

6
:noremap <C-n> //s<CR>v//e+1<CR> 

Editar resumen: fue // e, pero // e + 1 funcionó para mí (también se seleccionó el último carácter del partido).

+0

Eso es exactamente lo que necesitaba (excepto la prueba y el error mostraron que '// e + 1' me llevó al límite después de la última charla del partido; editado). ¡Ordenado! Después de no encontrarlo yo mismo, esperaba que sería complicado hacer lo que quisiera. –

+1

Derecha, ya veo. Cuando la opción ''selection'' se establece en' inclusive', entonces '// e' funciona en lo anterior. Cuando está configurado como 'exclusivo', entonces' // e + 1' funciona. Yo uso ': behave mswin' que establece' 'selection'' to 'exclusive'. –

7

// e lo lleva al carácter final de la última búsqueda. Más información: ayuda {desplazamiento}.

Puede encontrar cómo restaurar el búfer de búsqueda anterior here.

+0

Esto funcionó maravillosamente, para mí, gracias. La cosa noremap no funcionó (¿o tal vez no estaba en la forma que necesitaba?) –

4

Para el beneficio de la gente que tropezar con este problema en el futuro, vim ahora tiene esta función incorporada: gn (y su estrecha entre hermanos gN) saltará al siguiente partido (respectivamente, anterior) y visualmente seleccionarlo . También se puede usar como un movimiento; p.ej. cgn saltará a la siguiente coincidencia y la cambiará.

Cuestiones relacionadas