विम का उपयोग करके एक समाधान है।
सबसे पहले, आपको एक विम मैक्रो की आवश्यकता है, जो अधिकांश काम करेगा। इसे इसमें सहेजें ~/.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()
दूसरा, एक पेजर का अनुकरण करने के लिए, आपको विम का आह्वान करने की आवश्यकता है ताकि यह हो:
- मानक इनपुट पढ़ें
- लेकिन अगर कमांड लाइन पर तर्क दिया जाता है, तो वहां जो भी आता है उसे पढ़ें
- केवल पढ़ने के लिए मोड में काम करते हैं
- सभी init स्क्रिप्ट को छोड़ दें, लेकिन इसके बजाय ऊपर परिभाषित कम मैक्रो निष्पादित करें
मैंने इसे सहायक स्क्रिप्ट के रूप में एक साथ रखा ~/bin/vimpager
:
#!/bin/bash
what=-
test "$@" && what="$@"
exec vim -u NONE -R -S ~/.vim/plugin/less.vim -c Less $what
स्क्रिप्ट को निष्पादन योग्य बनाएं chmod +x ~/bin/vimpager
।
तीसरा, आपको psql के लिए पेजर प्रोग्राम को ओवरराइड करने की आवश्यकता है। चर को PAGER
विश्व स्तर पर सेट न करें , क्योंकि यह अन्य कार्यक्रमों को प्रभावित कर सकता है, न केवल psql। इसके बजाय, इसे अपनी ~/.psqlrc
फ़ाइल में जोड़ें :
\setenv PAGER ~/bin/vimpager
वोइला ! अपनी प्रोफ़ाइल को फिर से लोड करने के बाद, आप परिणाम का आनंद ले सकते हैं, जिसे उम्मीद के मुताबिक व्यवहार करना चाहिए (तीर कुंजी दोनों लंबवत और क्षैतिज रूप से ब्राउज़ करें) और इस तरह दिखें :। इसके अलावा, विम की सारी शक्ति वहीं है जहां आपको इसकी आवश्यकता है।