最初のN行を繰り返すあまり似ていないポケットベル

最初のN行を繰り返すあまり似ていないポケットベル

less表示されているすべてのページでプログラムに最初の行(または最初の2行)を繰り返す方法はありますか?

これを行うことができる他のポケットベルはありますか?

これはデータベーステーブルナビゲーションのためのキラーアプリになりmysqlますpsqlgqlplus

下のスクリーンショットを参照このページ。ヘッダー行+水平ASCII列を繰り返したい。

ベストアンサー1

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のポケットベルを書き換える必要があります。PAGERpsqlだけでなく他のプログラムにも影響を与えるため、グローバルに変数を設定しないでください。代わりに、以下をファイルに追加してください~/.psqlrc

\setenv PAGER ~/bin/vimpager

バラより!プロファイルを再読み込みすると、次のように期待どおりに機能する結果を楽しむことができます(垂直方向と水平方向のナビゲーション用の矢印キー)。活動中のウィンパー。さらに、必要に応じてVimのすべての機能を使用できます。

おすすめ記事