มีวิธีแก้ปัญหาการใช้เป็นกลุ่ม
ขั้นแรกคุณต้องมีแมโคร Vim ซึ่งจะทำงานได้เกือบทั้งหมด บันทึกไว้ใน~/.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()
ประการที่สองเพื่อจำลองเพจเจอร์คุณต้องเรียกใช้กลุ่มเพื่อที่จะ:
- อ่านอินพุตมาตรฐาน
- แต่ถ้ามีการให้อาร์กิวเมนต์บนบรรทัดคำสั่ง
- ทำงานในโหมดอ่านอย่างเดียว
- ข้ามสคริปต์เริ่มต้นทั้งหมด แต่เรียกใช้แมโครที่กำหนดไว้ด้านบนแทน
ฉันรวบรวมมันเป็นสคริปต์ผู้ช่วยใน~/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
Voila ! หลังจากโหลดโปรไฟล์ของคุณคุณสามารถเพลิดเพลินไปกับผลที่ควรประพฤติตามที่คาดไว้ (ปุ่มลูกศรดูได้ทั้งแนวตั้งและแนวนอน) และมีลักษณะเช่นนี้ นอกจากนี้พลังทั้งหมดของ Vim จะอยู่ตรงนั้นหากคุณต้องการ