Vim kullanan bir çözüm var.
İlk olarak, işin çoğunu yapacak bir Vim makrosuna ihtiyacınız var. Şuraya kaydedin ~/.vim/plugin/less.vim
:
" :Less
" turn vim into a pager for psql aligned results
fun! Less()
set nocompatible
set nowrap
set scrollopt=hor
set scrollbind
set number
execute 'above split'
" resize upper window to one line; two lines are not needed because vim adds separating line
execute 'resize 1'
" switch to lower window and scroll 2 lines down
wincmd j
execute 'norm! 2^E'
" hide statusline in lower window
set laststatus=0
" hide contents of upper statusline. editor note: do not remove trailing spaces in next line!
set statusline=\
" arrows do scrolling instead of moving
nmap ^[OC zL
nmap ^[OB ^E
nmap ^[OD zH
nmap ^[OA ^Y
nmap <Space> <PageDown>
" faster quit (I tend to forget about the upper panel)
nmap q :qa^M
nmap Q :qa^M
endfun
command! -nargs=0 Less call Less()
İkincisi, bir çağrı cihazını taklit etmek için vim'i çağırmanız gerekir, böylece:
- standart girişi oku
- ancak komut satırında argüman verilirse, oraya gelenleri okuyun
- salt okunur modda çalış
- tüm başlangıç komut dosyalarını atla, bunun yerine yukarıda tanımlanan Daha az makro çalıştır
Bunu yardımcı komut dosyası olarak bir araya getirdim ~/bin/vimpager
:
#!/bin/bash
what=-
test "$@" && what="$@"
exec vim -u NONE -R -S ~/.vim/plugin/less.vim -c Less $what
Komut dosyasını ile çalıştırılabilir yapın chmod +x ~/bin/vimpager
.
Üçüncü olarak, psql için çağrı programını geçersiz kılmanız gerekir. Değişkeni PAGER
global olarak ayarlamayın , yalnızca psql'i değil diğer programları da etkileyebilir. Bunun yerine bunu ~/.psqlrc
dosyanıza ekleyin :
\setenv PAGER ~/bin/vimpager
Voila ! Profilinizi yeniden sonra, böyle (hem dikey hem de yatay olarak göz tuşları ok) ve göz beklendiği gibi davranması gerektiği, hangi sonucu keyfini: . Ayrıca, ihtiyacınız olduğunda Vim'in tüm gücü tam orada.