Wie kann ich eine Suche durchführen, wenn vim Inhalte mit dem Pager "more" anzeigt?

17

Ich möchte den Wert einer Variablen sehen und führe den Befehl aus

:let

Vim zeigt die Ergebnisse dieses Befehls mit dem --more--Pager an.
Wie kann ich nach einer Phrase suchen, zB html?
Ich habe in der Manpage nach dem Pager +/gesucht, der besagt , dass er für die Suche verwendet wird, aber es scheint nicht zu funktionieren, und auch nicht /nach dem weniger Pager.

the_velour_fog
quelle
1
AFAIK, es ist ein Vim- interner Befehl - es sieht aus wie 'more', aber das Programm wird nicht von Vim aufgerufen (Beweis: es funktioniert auch unter Windows). Sie können immer noch den Anfang eines Variablennamens schreiben, bevor Sie Vim bitten, ihn zu vervollständigen (z Ctrl-d. B. mit ).
VanLaser,
danke, wenn ich den Variablennamen eingebe - oder eigentlich so ziemlich alles -, wird er von vim nicht akzeptiert - es werden nur Eingabeaufforderungen -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quitin der Befehlszeile angezeigt.
the_velour_fog
1
Schreiben Sie, :let dann drücken Sie nicht Enter, aber Taboder Ctrl-d- Sie haben eine Liste der vorhandenen Variablen im Stil "mehr" angezeigt - jetzt drücken Sie Esc, schreiben Sie ein paar Buchstaben, drücken Sie Taboder noch Ctrl-deinmal ... und so weiter, bis Sie die Variable finden, die Sie suchen wollen. Um den Wert einer Variablen zu sehen, sollten Sie vielleicht echo stattdessen verwenden. (Oder set variable-name?für Optionen)
VanLaser
1
sehr cool, sowohl der Ctrl-dals auch der Echo-Trick haben gut funktioniert, danke!
the_velour_fog

Antworten:

16

Dies ist nicht der morePager, sondern der interne und minimalistische Pager von Vim, der über keine Suchfunktionen verfügt.

Sie können jedoch den folgenden :redirBefehl verwenden:

:redir @a    redirect output of following commands to register a
:let         list every current option and its value
G<CR>        go straight to the end of the listing and make it disappear
:redir END   stop redirection
:tabnew      open a new buffer in a new window in a new tab page
"ap          put from register a

… Dann verwende normale Vim-Befehle.

romainl
quelle
oh, sehr cool, das ist ein großartiger Befehl zu wissen! danke
the_velour_fog
7
etwas einfacher::redir @b|sil let|redir end
Christian Brabandt
11

Vim 8 verfügt über einen execute()Befehl, mit dem Sie die Ausgabe eines Befehls abrufen können. Gehen Sie wie folgt vor, um den aktuellen Puffer anzuzeigen:

:put =execute('let')

Für Vim 7 können Sie capture.vim verwenden . Es ist ein Plugin, das die Befehle aus der Antwort von @ romainl umschließt und es Ihnen ermöglicht, es als zu verwenden

:Capture let
laktak
quelle
das ist gut zu wissen, danke. Ich werde es überprüfen, wenn ich ein Upgrade durchführe. In Version 7 verwende ich das Clam-Plugin von Steve Losh, um große Mengen der Ausgabe in einem neuen Puffer zu erfassen. es funktioniert auch gut
the_velour_fog