2011-01-31 11 views
6

Estoy intentando buscar una parte de alguna línea que se tira en modo visual.vim patrón de búsqueda para una línea de texto extraída en modo visual

¿Cuál es la forma más rápida de hacerlo en VIM? Por ejemplo, los grupos

Hello, #{1} world. 

prosigo v entrar en el modo visual y seleccione llo, #{1} wor en la línea 1. Entonces me dio un tirón el texto seleccionado pulsando y, y luego, estoy tratando de buscar el texto seleccionado presionando /. Esto lleva a las siguientes preguntas:

A: ¿Cómo pasar un texto extraído cuando estoy en modo de búsqueda?

B: ¿Cómo evitar el trabajo de escapar caracteres para un patrón de búsqueda?

+0

corregido el título a * visual * modo (era * virtual * antes) – eckes

Respuesta

3

He anulado the star command for the visual mode (NB:. Se requiere una archivo de lh-vim-lib). Responde a sus necesidades:

  1. seleccione en Visual modo
  2. prensa */#
  3. continuar la búsqueda con n/N
+0

Gracias. Copié la función lh # visual # selection en v_star.vim. ¡Funciona a las mil maravillas! – SunLiWei

6

Cuando un tirón a un texto (y no especifica un registro de dar un tirón en), se va a registrar 0. Por lo tanto, si desea buscar ese texto pegado, presione ESC para que entre en modo normal y luego

/CTRL-r0 

(es decir, de prensa /, entonces CTRL + r, entonces) para tirar del contenido del registro 0 en el patrón de búsqueda.

Algunas notas:

  • Para buscar otros patrones almacenados en otros registros, puede escribir :reg y ver el contenido del registro antes de decidir qué registro de contenido a utilizar para su búsqueda.
  • Para arrastrar a un registro diferente de 0 (por ejemplo, 2), puede escribir "2y (:he v_y).
  • Para buscar el texto seleccionado directamente, se puede usar el mapeo describe here que le permite simplemente pulsa X (X carácter en mayúscula), mientras que en el modo visual para buscar ese texto.
  • Para buscar en general, this vimcast le ofrece una introducción a la ventana de línea de comandos muy poderosa con el historial de búsquedas (descubrimos hace dos semanas y absolutamente nos encanta!).
+0

Gracias por la clara explicación. – Kalyan

12

A:

Ctrl-r .

B:

Además de la Ctrl-r truco, también hay Ctrl-r=, lo que le permite escribir en una expresión para ser evaluada y se expande al resultado .

/ (ahora el símbolo se parece /)
Ctrl-R= (ahora el símbolo se parece =)
escape(@0, '\^$*.~[')Introduzca (ahora el símbolo se parece /llo, #{1} wor)
Ingrese

Tenga en cuenta que @reg significa "el contenido del registro reg", y el registro 0 es el último tirón o eliminación. Yo creo que escapa a todos los personajes que son especiales en las expresiones regulares vi ... en cualquier caso, es probable que prefiere hacer un mapeo de escribir que todo en

+0

Si tiro toda la línea, tengo que eliminar '^ M' o'^@ 'del final antes de buscar. –

Cuestiones relacionadas