Как я могу выполнить поиск, когда vim отображает контент, используя пейджер «more»?


17

Я хочу увидеть значение переменной, поэтому я запускаю команду

:let

Vim отображает результаты этой команды, используя --more--пейджер.
Как я могу найти это по фразе, например html?
Я посмотрел справочную страницу для большего количества пейджеров, в которых говорится, что +/он используется для поиска, но, похоже, он не работает, /как и в случае с меньшим количеством пейджеров.


1
AFAIK, это внутренняя команда Vim - она ​​выглядит как «more», но Vim не вызывает программу (доказательство: она работает и в Windows). Вы все еще можете написать начало имени переменной, а затем попросить Vim завершить его (например, с помощью Ctrl-d).
VanLaser

спасибо, когда я набираю имя переменной - или вообще ничего, - vim не примет это - он просто запрашивает -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quitв командной строке.
the_velour_fog

1
Напишите, :let затем не нажимайте Enter, но Tabили Ctrl-d- у вас будет список существующих переменных, отображаемый в стиле «больше» - теперь нажмите Esc, напишите несколько букв, нажмите Tabили еще Ctrl-dраз ... и так далее, пока не найдете переменную, которую вы хочу. На самом деле, чтобы увидеть значение переменной, возможно, вам следует использовать echo вместо этого? (Или set variable-name?для вариантов)
VanLaser

1
очень круто, Ctrl-dи трюк с эхом сработал хорошо, спасибо!
the_velour_fog

Ответы:


16

Это не moreпейджер, это внутренний и минималистичный пейджер Vim, который не имеет возможностей поиска.

Но вы можете использовать :redirкоманду:

: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

… Затем используйте обычные команды Vim.


о, очень круто, это отличная команда, чтобы знать! спасибо
the_velour_fog

7
немного проще::redir @b|sil let|redir end
Кристиан Брабандт

11

В Vim 8 есть execute()команда, позволяющая получить вывод команды. Для просмотра текущего буфера выполните:

:put =execute('let')

Для Vim 7 вы можете использовать capture.vim . Это плагин, который упаковывает команды из ответа @ romainl и позволяет использовать его как

:Capture let

это приятно знать, спасибо. Я проверю это при обновлении. На vim 7 я использую плагин clave Стива Лоша для захвата большого количества выходных данных в новый буфер. это тоже хорошо работает
the_velour_fog
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.