Command-Line
尋呼程序,像less,能夠重複前N行
有沒有辦法讓
less
程序在每個顯示的頁面上重複第一行(或前兩行)?有沒有其他尋呼程序可以做到這一點?
這將是一個用於數據庫表瀏覽、思考或…的殺手
mysql
級psql
應用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
瞧!重新載入您的個人資料後,您可以享受結果,其行為應符合預期(箭頭鍵可垂直和水平瀏覽),如下所示:. 此外,如果您需要,Vim 的所有功能都在那裡。