Wie grep ich in der Ex-Befehlsausgabe?

10

Wie sucht man in der Ex-Befehlsausgabe nach einem Muster? Wie kann man beispielsweise in der :scriptnamesBefehlsausgabe nach einem Dateinamenmuster suchen ? In der Hilfe für alle Geschmacksrichtungen von grepund vimgrepgibt es nur {file}einen Ort, an dem eine Suche durchgeführt werden kann.

Al Berger
quelle

Antworten:

6

Du könntest es tun :

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

Was es macht :

: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`

edi9999
quelle
8

Der :filterBefehl ist ein einfacher, einzeiliger Ansatz.

:filter /indent/ scriptnames

Es werden nur Zeilen angezeigt, die mit dem Muster indentaus der Ausgabe des :scriptnamesBefehls übereinstimmen .


Ich sehe :rediroft orientierte Lösungen für Fragen wie diese, die in Ordnung sind und viel Kraft und Optionen bieten, aber ich denke, sie sind ein bisschen übertrieben, wenn man meistens nur schnell überprüfen muss, ob etwas da ist. :filterist bequem im Moment zu bedienen und kinderleicht.

ZeroKnight
quelle
1
Das ist sauberer und prägnanter.
JDHAO
In der Tat sollte dies die akzeptierte Antwort sein. (Ich habe viel aus der Antwort von edi9999 gelernt, daher die Gegenstimme.)
toraritte
3

Zuerst müssen Sie die Ausgabe von scriptnamesabrufen und in einen Puffer legen.

Sie können dafür verwenden :redir:

: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'

Eine :scriptnameAusgabe, die zu lang ist, um mit eigenen Augen gescannt zu werden, kann jedoch ein Symptom für tiefere Probleme sein.

romainl
quelle
Stimmen Sie Ihrem letzten Satz zu. Wenn die Ausgabe so lang ist, sollte die Filterung direkt über die Befehlszeile und nicht innerhalb von ex erfolgen.
Wildcard
Entschuldigung, verstehe nicht, was du mit einer zu langen Liste meinst. ZB hat Syntastic in dieser Liste 10 Dateien, Nerdtree weitere 13 Dateien usw.
Al Berger
2
Wenn Ihre Ausgabe :scriptnameslänger als Magna Carta ist, können Sie Tim Popes Scriptease installieren . Es bietet eine Funktion :Scriptnames, die all diesen Müll in eine Quickfix-Liste einfügt. Dort können Sie es nach Herzenslust durchsuchen, in einer Datei speichern oder zu den entsprechenden Skripten gehen.
Sato Katsura
@AlBerger, eine zu lange Liste bedeutet zu viele Plugins und / oder Plugins, die zu groß oder schlecht geschrieben sind. 13 Dateien für ein einzelnes Plugin sind viel zu viel.
Romainl
Schlagen Sie NERDTreevor, alle Funktionen in einer einzigen Datei zusammenzufassen, um die Ausgabe von :scriptnameskurz zu halten ? Wäre das ein besser geschriebenes Plugin?
Sato Katsura