Jak mogę przeprowadzić wyszukiwanie, gdy vim wyświetla zawartość za pomocą pagera „więcej”?

17

Chcę zobaczyć wartość zmiennej, więc uruchamiam polecenie

:let

Vim wyświetla wyniki tego polecenia za pomocą --more--pagera.
Jak mogę wyszukać to wyrażenie, np. html?
Szukałem strony podręcznika, aby znaleźć więcej stronicowania, które mówi, że +/jest używane do wyszukiwania, ale wydaje się, że nie działa, /podobnie jak w przypadku mniej stronicowania.

the_velour_fog
źródło
1
AFAIK, to wewnętrzne polecenie Vima - wygląda na „więcej”, ale Vim nie wywołuje tego programu (dowód: działa również w systemie Windows). Nadal możesz napisać początek nazwy zmiennej, niż poprosić Vima o jej uzupełnienie (np. Za pomocą Ctrl-d).
VanLaser,
dzięki, kiedy wpisuję nazwę zmiennej - a właściwie właściwie cokolwiek - vim nie zaakceptuje jej - po prostu wyświetla się -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quitw wierszu poleceń.
the_velour_fog,
1
Napisz, :let a następnie nie uderzaj Enter, ale Tablub Ctrl-d- będziesz mieć listę istniejących zmiennych, wyświetlanych w stylu „więcej” - teraz wciśnij Esc, napisz kilka liter, wciśnij Tablub Ctrl-djeszcze raz ... i tak dalej, aż znajdziesz zmienną chcieć. Właściwie, aby zobaczyć wartość zmiennej, być może powinieneś użyć echo zamiast tego? (Lub set variable-name?dla opcji)
VanLaser
1
bardzo fajnie, zarówno Ctrl-dsztuczka jak i echo działały ładnie, dzięki!
the_velour_fog

Odpowiedzi:

16

To nie jest morepager, to wewnętrzny i minimalistyczny pager Vima, który nie ma możliwości wyszukiwania.

Ale możesz użyć :redirpolecenia:

: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

… Następnie użyj zwykłych poleceń Vima.

romainl
źródło
och, bardzo fajne, to świetne polecenie wiedzieć! dzięki
the_velour_fog
7
nieco prostsze::redir @b|sil let|redir end
Christian Brabandt,
11

Vim 8 ma execute()polecenie, które pozwala uzyskać wynik polecenia. Aby zobaczyć go w bieżącym buforze:

:put =execute('let')

W przypadku Vima 7 możesz użyć capture.vim . Jest to wtyczka, która otacza polecenia z odpowiedzi @ romainl i pozwala używać jej jako

:Capture let
laktak
źródło
dobrze wiedzieć, dzięki. Sprawdzę to po aktualizacji. W vimie 7 używam wtyczki clam steve losha do przechwytywania dużych ilości danych wyjściowych do nowego bufora. to też działa dobrze
the_velour_fog