Quando usare: grep e: vimgrep in vim?


16

In vim :makesemplifica la creazione e la correzione di errori :grepe :vimgrepsi comporta come :make. Ma perché hai bisogno di questi due comandi? Perché non cercare solo il motivo e premere n? Quali sono i loro vantaggi rispetto alla sola ricerca?

Risposte:


16

Come dice il documento:

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

In poche parole, :vimgreputilizza il meccanismo grep di Vim per leggere e trovare nei file. :greputilizza comandi esterni per ottenere lo stesso lavoro.

La /ricerca è solo per il buffer corrente, mentre :[vim]grepcerca attraverso un modello di file, che consente di cercare in un intero progetto contemporaneamente.

Dai un'occhiata a :h grepper maggiori informazioni.


4

/?cerca solo il buffer corrente ma :grepe :vimgrepprendi file / schemi / globi arbitrari come argomenti.


4

Uno dei vantaggi di :[vim]grepover /?è che i risultati vengono inseriti nell'elenco delle correzioni rapide (o nell'elenco delle posizioni se si utilizza :l[vim]grep), ciò significa che è possibile estrarre un elenco di tutte le corrispondenze utilizzando :cl. È quindi possibile utilizzare un numero per passare direttamente al risultato desiderato dall'elenco.

Significa anche che è possibile utilizzare lo stesso comando per la ricerca nel buffer corrente :[vim]grep pattern %come per la ricerca dell'intera base di codice in :[vim]grep pattern pathmodo che ci sia una bella simmetria.

Inoltre, puoi ramificarti e utilizzare Silver Surfer / Ripgrep per darti una ricerca molto potente. Questi possono essere associati al :[vim]grepcomando.


0

Ci sono 3 vantaggi principali che vedo

  1. Usa un regexmotore / sintassi coerente : usando :grep/vimgreppuoi definire un grepprg, che può essere definito in grep/ack/agecc. Usando questo puoi cercare il buffer corrente o più buffer / file, usando un regexmotore coerente . D'altra parte, se usi l'/pattern opzione di vim , sei bloccato sul motore regex predefinito di vim, che ha una sintassi diversa rispetto alla extended regular expressionsintassi. Quindi, ogni volta che devi cercare un'espressione, dovrai pensare / ricordare se dovresti usare \)o solo )e altre differenze. Questo può essere molto fastidioso ( /programming/3864467/whats-the-difference-b Between- vim- regex- and- normal- regex )

  2. vimgrep popola un elenco di correzioni rapide / posizione : l'utilizzo :grep/vimgrepconsente di popolare un elenco di ricerca. ( https://medium.com/@lakshmankumar12/quickfix-and-location-list-in-vim-ca0292ac894d ).

    Se si desidera utilizzare l'elenco delle posizioni, è possibile utilizzare il ]qcollegamento per spostarsi se si dispone di un plug-in non danneggiato di Tim-Popes ( https://github.com/tpope/vim-unimpaired )

  3. ricerche complicate all'interno di vim : in genere se devi fare ricerche complicate potresti dover usare la riga di comando. Tuttavia, se si definisce greprgcorrettamente e si utilizza un comando come [1]

    : vim / pattern1 / find . -type f

    Puoi eseguire ricerche molto complicate e visualizzare i risultati della ricerca nel tuo location listo quickfix list.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.