¿Cuándo usar: grep y: vimgrep en vim?


16

En vim :makehace que sea fácil construir y corregir errores, :grepy se :vimgrepcomporta como :make. Pero, ¿por qué necesitas estos dos comandos? ¿Por qué no solo buscar el patrón y simplemente presionar n? ¿Cuáles son las ventajas de ellos sobre la simple búsqueda?

Respuestas:


16

Como dice el documento:

Vim has two ways to find matches for a pattern: Internal and external.

En pocas palabras, :vimgreputiliza el mecanismo grep de Vim para leer y buscar archivos. :grepusa comandos externos para lograr el mismo trabajo.

La /búsqueda es solo para el búfer actual, mientras que :[vim]grepbusca a través de un patrón de archivos, lo que le permite buscar en un proyecto completo a la vez.

Echa un vistazo :h greppara más información.


4

/?Sólo buscar en la memoria intermedia actual, pero :grepy :vimgreptomar arbitrarias archivos / patrones / pegotes como argumentos.


4

Una de las ventajas de :[vim]grepover /?es que los resultados se colocan en la lista de soluciones rápidas (o en la lista de ubicaciones si la usa :l[vim]grep), esto significa que puede obtener una lista de todas las coincidencias usando :cl. Luego puede usar un número para ir directamente al resultado que desea de la lista.

También significa que puede usar el mismo comando para buscar en el búfer actual :[vim]grep pattern %que para buscar en toda la base de código, :[vim]grep pattern pathpor lo que tiene una buena simetría.

Además de esto, puede ramificarse y usar Silver Surfer / Ripgrep para brindarle una búsqueda muy poderosa. Estos se pueden asignar al :[vim]grepcomando.


0

Hay 3 ventajas principales que veo

  1. Utilice un regexmotor / sintaxis coherente : el uso le :grep/vimgreppermite definir un grepprg, que puede definirse como grep/ack/agetc. Con esto, puede buscar en el búfer actual o en múltiples búferes / archivos, utilizando un regexmotor coherente . Por otro lado, si usa la/pattern opción vim , está atascado en el motor de expresiones regulares predeterminado de vim, que tiene una sintaxis diferente en comparación con la extended regular expressionsintaxis. Por lo tanto, cada vez que tenga que buscar una expresión, tendrá que pensar / recordar si debe usar \)o simplemente )y otras diferencias. Esto puede ser muy molesto ( /programming/3864467/whats-the-difference-between-vim-regex-and-normal-regex )

  2. vimgrep llena una lista de ubicación rápida / rápida : el uso le :grep/vimgreppermite llenar una lista de búsqueda. ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d ).

    Si desea usar la lista de ubicaciones, puede usar el ]qacceso directo para navegar si tiene el complemento no dañado de Tim-Papas ( https://github.com/tpope/vim-unimpaired )

  3. búsquedas complicadas dentro de vim : por lo general, si tiene que hacer búsquedas complicadas, puede que tenga que usar la línea de comando. Sin embargo, si define greprgcorrectamente y utiliza un comando como [1]

    : vim / patrón1 / find . -type f

    Puede hacer búsquedas muy complicadas y mostrar los resultados de búsqueda en su location listo quickfix list.

[1] http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/

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.