2016-12-10 3 views
2

Der Befehl vim 'Skriptnamen' gibt alle geladenen Skripte aus. Das Problem ist, dass ich keinen praktischen Weg finden kann, um darauf zu filtern/suchen/zu finden. Ich möchte nach einem Drehbuch suchen, ohne das mit "Augenbrut" machen zu müssen.So suchen Sie nach vim 'Skriptnamen' Befehl

+0

Ich weiß es nicht, es gibt eine reine vim Weg, dies zu tun, aber ein Workaround wäre vim innerhalb 'tmux' laufen und dann' tmux' Suchfunktion verwenden, um zu suchen, was Sie wollen. Und wenn Sie sich in einem Terminalemulator befinden, verwenden Sie auch die Suchfunktion. –

Antwort

5

Es gibt nicht so etwas wie ein script Befehl gibt es nur scriptencoding und scriptnames (die als scr abgekürzt werden kann, nach :h :scr). Ich nehme an, Sie suchen nach scriptnames.

Mit Vim 8 können Sie die Ergebnisse der meisten Befehle mit :filter filtern:

:filter /pattern/ scriptnames 

(vgl :h :filter).

Bei älteren Versionen von Vim Sie alle Nachrichten in eine Datei umleiten kann, bevor :scriptnames ausgeführt wird, dann brechen Sie die Umleitung:

:redir >file 
:scriptnames 
:redir END 

(vgl :h :redir). Alternativ können Sie auch Nachrichten an ein Register umleiten, dann fügen Sie den Inhalt des Registers zu einem Puffer:

:redir @a 
:scriptnames 
:redir END 
:new 
"aP 

Schließlich Tim Pope Plugin scriptease fügt einen Befehl :Scriptnames, die die Ergebnisse in eine quickfix Liste :scriptnames und lädt läuft.

+0

FYI ': scriptnames' kann zu': script' abgekürzt werden. – romainl

+1

@roomain Wie gesagt: Es kann abgekürzt werden mit ': scr'. Bei älteren Versionen von Vim bedeutete das, dass es auch zwischen ': scr' und': scriptnames' (einschließlich ': script') abgekürzt werden könnte, aber das wird heutzutage nicht empfohlen. –

+0

Also '' script' existiert. Kurze Namen werden in Vimskripten nicht empfohlen, da sie schwer lesbar sind, ohne dass sie einen Vorteil bringen, aber sie werden in der Befehlszeile mehr als nur unterstützt. – romainl

1

Anstelle von :redir haben wir execute() mit den neuesten Versionen von vim.

So können Sie mit :echo filter(split(execute('scritnames'), "\n"), 'v:val =~ "somepattern") oder :new + put=execute(':scriptnames') + im Puffer suchen, wie Sie eine Log-Lebensdauer erkundet haben würde.