2008-12-12 9 views
92

Uso los complementos vim y vim para Visual Studio cuando escribo C++. A menudo, me parece que quiero buscar una cadena dentro de una función, por ejemplo, cada llamada al object->public_member.memberfunc().Buscar la selección en vim

sé vim ofrece una manera conveniente de buscar una sola palabra, pulsando * y #, y también puede buscar cadenas escritos utilizando el comando omnipresente barra /. Cuando intenta buscar todas las instancias de una cadena más larga como la anterior, tarda un tiempo en volver a escribir después de /.

¿Hay alguna manera de buscar la selección? Por ejemplo, resalte con v, luego copie con y, ¿hay alguna manera de pegar después de /? ¿Hay un atajo más fácil?

+0

duplicado posible de [¿Cómo puedo buscar el texto seleccionado?] (Http://stackoverflow.com/questions/8587136/how-do-i-search-for-the-selected-text) – acm

Respuesta

141

Comprobar este consejo Vim: Search for visually selected text

O puede simplemente dar un tirón el texto seleccionado por y e ir al modo de buscar /, a continuación, se puede pegar el último texto pegado con Ctrl + R 0

+1

Muy bueno. CMS = rápido + detallado. – Marcin

+3

@CMS. Gracias. ¡Un gran consejo! Usando: reg para ver lo que está en sus registros y luego usar cntl-R N para obtener lo que está registrado ¡N es excelente! –

+0

@Rob & @Marcin, de nada, ¡feliz Vimming! – CMS

35

uso q/ en lugar de sólo /. (Lo mismo con q:). ¡Ahora puedes editar VIM a través de tu comando y tu historial de búsqueda! (Pruebe Ctrl-N y Ctrl-P en algún momento).

+1

+1 ¡Consejo interesante! No está realmente relacionado, pero sigue siendo muy útil. – Marcin

+4

Después de ver la respuesta de Cory Klein, me doy cuenta de que estaba muy equivocado sobre que esto no esté relacionado. En realidad, todo el proceso es un poco más rápido para mí. (¡No se necesita la tecla Ctrl!) – Marcin

66

Sobre la base de la respuesta de arcanex, aquí es otra manera de hacer lo que quiera.

  1. Yank el texto que desea buscar
  2. q/p
  3. Introduzca

Explicación

q/ funciona de manera similar a la búsqueda de vainilla / excepción está en el modo de comandos para p realidad significa "pegar" en lugar de escribir el carácter p. Entonces, lo anterior jalará los caracteres que está buscando y luego los pegará en una búsqueda.

(ver :help q/)

+3

Me gusta este, porque me parece que escribir es tan poco conveniente. – Jan

+0

¡Excelente! Usando emacs en 'evil-mode', esto realmente funciona, mientras que la respuesta aceptada se rompe miserablemente (probablemente debido al uso de la tecla' Ctrl'). – eestrada

+1

Ideal para cadenas simples, pero no escapa a los caracteres especiales de expresiones regulares, como se señala en [el comentario de esta otra respuesta] (http://stackoverflow.com/questions/363111/search-for-selection-in-vim#comment44689091_14747639). – Bluu

2

En realidad se puede seleccionar texto visualmente y pulse * y # para buscar la siguiente ocurrencia ... Se trabajará la misma, la única salvedad es que:

espacio en blanco en la selección coincide con ningún espacio en blanco, en la búsqueda (búsqueda de "hola mundo" también encontrará "hola" al final de una línea, con el "mundo" en el inicio de la siguiente línea).

http://vim.wikia.com/wiki/Search_for_visually_selected_text

+2

para mí, seleccionando texto visualmente y luego presionando * simplemente amplía mi selección visual. –

+0

No puede de forma predeterminada a menos que ponga en vimrc la asignación de la página. – Ayrat

9

acabo de aprender (a través del excelente libro práctica Vim) que hay un plugin para eso. Puede encontrar el plugin on GitHub.

El complemento le permite buscar una selección visual con * y #.

+4

Tenga en cuenta que las otras respuestas no escapan. Usando esos métodos, los metacaracteres seleccionados no serán buscados literalmente, dependiendo de la configuración actual de 'magic'. Esto podría incluso hacer que la búsqueda falle en metacaracteres que requieren equilibrio. El complemento mencionado aquí hará que se escape antes de buscar el texto seleccionado. –

+0

funciona, pero desafortunadamente no se puede usar 'n' para ir al próximo elemento encontrado, mientras que los enfoques de Cory y CMS sí lo permiten .. – Ayrat

-1

Resalte el texto con v y utilizar // a búsqueda.

Usted puede así dar un tirón el texto seleccionado utilizando y y luego pegar con p

+0

no,' v // 'no funciona para mí, expande el texto seleccionado aún más.. – Ayrat

Cuestiones relacionadas