Come grep nell'output del comando ex?


10

Come si cerca uno schema nell'output del comando ex? Ad esempio, come cercare un modello di nome file nell'output del :scriptnamescomando? In aiuto di tutti i gusti grepe vimgrepc'è solo {file}un posto dove eseguire la ricerca.

Risposte:


6

Potresti fare:

:redir => scriptn | sil exe 'scriptnames' | redir end | echo(system('grep pattern',scriptn))

Cosa fa :

:redir => scriptn "redirect following output to variable scriptn :sil exe 'scriptnames' "silently execute scriptnames :redir end "end the redirection :echo(system('grep pattern',scriptn)) "echo the call of grep witht that input with the pattern `pattern`


8

Il :filtercomando è un semplice approccio a una riga a questo.

:filter /indent/ scriptnames

Mostrerebbe solo le linee corrispondenti allo schema indentdall'output del :scriptnamescomando.


Vedo :redirspesso soluzioni orientate a domande come queste, che vanno bene e offrono molta potenza e opzioni, ma sento che sono un po 'eccessive quando più spesso, devi solo verificare rapidamente se c'è qualcosa. :filterè comodo da usare nel momento e morto semplice.


1
questo è più pulito e più conciso.
— jdhao,

In effetti, questa dovrebbe essere la risposta accettata. (Ho imparato molto dalla risposta di edi9999, quindi l'upgrade.)
— Toraritte,

3

Innanzitutto, devi prendere l'output di scriptnamese inserirlo in un buffer.

Puoi usare :redirper quello:

:redir @a       " redirect output of following ex commands to register a
:scriptnames    " press G to get to the end of the output if it's too long
:redir END      " end the redirection
:vnew           " new buffer in vertical window
:put a          " put content of register
/pattern        " search for 'pattern'

Detto questo, un :scriptnameoutput troppo lungo per essere scansionato con i tuoi occhi potrebbe essere un sintomo di problemi più profondi.


Accetto la tua ultima frase. Se l'output è così lungo, il filtro dovrebbe essere fatto direttamente dalla riga di comando, non dall'interno di ex.
— Wildcard il

Spiacenti, non capisci cosa intendi per elenco troppo lungo. Ad esempio sintetico ha in quella lista 10 file, nerdtree altri 13 file, ecc.
— Al Berger,

2
Se l'output del tuo :scriptnamesè più lungo di Magna Carta, potresti prendere in considerazione l'installazione dello scriptease di Tim Pope . Fornisce una funzione :Scriptnamesche mette tutta quella spazzatura in un elenco di soluzioni rapide. Lì puoi cercarlo nel contenuto del tuo cuore, salvarlo in un file o andare agli script corrispondenti.
— Sato Katsura,

@AlBerger, un elenco troppo lungo significa troppi plugin e / o plugin troppo grandi o scritti male. 13 file per un singolo plugin sono troppo.
— romainl

Stai suggerendo che NERDTreedovrebbe mettere tutte le sue funzioni in un singolo file, al fine di mantenere l'output di :scriptnamesbreve? Lo renderebbe un plugin scritto meglio?
— Sato Katsura,
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.