Bagaimana saya bisa melakukan pencarian ketika vim menampilkan konten menggunakan pager "lainnya"?

17

Saya ingin melihat nilai suatu variabel, jadi saya menjalankan perintah

:let

Vim menampilkan hasil dari perintah ini menggunakan --more--pager.
Bagaimana saya bisa mencari frasa ini, misalnya html?
Saya telah melihat halaman manual untuk pager lebih banyak yang mengatakan +/digunakan untuk pencarian tetapi tampaknya tidak berfungsi, begitu juga /dengan pager kurang.

the_velour_fog
sumber
1
AFAIK, ini adalah perintah internal Vim - sepertinya 'lebih', tetapi program ini tidak dipanggil oleh Vim (bukti: ia bekerja di Windows juga). Anda masih bisa menulis awal nama variabel, daripada meminta Vim untuk melengkapinya (misalnya dengan Ctrl-d).
VanLaser
terima kasih, ketika saya mengetik nama variabel - atau sebenarnya cukup banyak - vim tidak akan menerimanya - itu hanya diminta dengan -- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quitdi commandline.
the_velour_fog
1
Tulis :let maka jangan tekan Enter, tetapi Tabatau Ctrl-d- Anda akan memiliki daftar variabel yang ada, ditampilkan dalam gaya "lebih" - sekarang tekan Esc, tulis beberapa huruf, tekan Tabatau Ctrl-dlagi ... dan seterusnya sampai Anda menemukan variabel yang Anda ingin. Sebenarnya, untuk melihat nilai suatu variabel, mungkin sebaiknya Anda menggunakan echo saja? (Atau set variable-name?untuk opsi)
VanLaser
1
sangat keren, baik itu Ctrl-ddan gema triknya bekerja dengan baik, terima kasih!
the_velour_fog

Jawaban:

16

Ini bukan morepager, ini adalah pager internal dan minimalis Vim yang tidak memiliki kemampuan pencarian.

Tapi Anda bisa menggunakan :redirperintah:

: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

... kemudian gunakan perintah Vim biasa.

romainl
sumber
oh sangat keren, itu perintah yang bagus untuk diketahui! terima kasih
the_velour_fog
7
sedikit lebih sederhana::redir @b|sil let|redir end
Christian Brabandt
11

Vim 8 memiliki execute()perintah yang memungkinkan Anda untuk mendapatkan output dari perintah. Untuk melihatnya ke buffer saat ini lakukan:

:put =execute('let')

Untuk Vim 7 Anda dapat menggunakan capture.vim . Ini adalah plugin yang membungkus perintah dari jawaban @ romainl dan memungkinkan Anda menggunakannya

:Capture let
laktak
sumber
itu bagus untuk diketahui, terima kasih. Saya akan memeriksanya ketika saya memutakhirkan. Pada vim 7 saya menggunakan plugin clam steve losh untuk menangkap sejumlah besar output ke buffer baru. itu juga berfungsi dengan baik
the_velour_fog