Command-Line

尋呼程序,像less,能夠重複前N行

  • March 6, 2020

有沒有辦法讓less程序在每個顯示的頁面上重複第一行(或前兩行)?

有沒有其他尋呼程序可以做到這一點?

這將是一個用於數據庫表瀏覽、思考或…的殺手mysqlpsql應用gqlplus程序

請參閱本頁底部的螢幕截圖。我想重複標題行 + 水平 ascii 欄。

有一個使用 Vim 的解決方案。

首先,您需要一個 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()

其次,要模擬尋呼機,您需要呼叫 vim 以便它:

  • 讀取標準輸入
  • 但是如果在命令行上給出了參數,請閱讀那裡的任何內容
  • 在只讀模式下工作
  • 跳過所有初始化腳本,而是執行上面定義的 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

!重新載入您的個人資料後,您可以享受結果,其行為應符合預期(箭頭鍵可垂直和水平瀏覽),如下所示:vimpager 在行動. 此外,如果您需要,Vim 的所有功能都在那裡。

引用自:https://unix.stackexchange.com/questions/27812