zsh が (postgresql) データベースをクエリするときに less として動作するのはなぜですか?

zsh が (postgresql) データベースをクエリするときに less として動作するのはなぜですか?

コンテクスト

  • zshシェル、
  • oh-my-zshフレームワーク、
  • 特別なzsh設定はありませんpostgresql

トラブル

厄介な動作に気付きました: データベースをクエリするとき、例:

SELECT * FROM mytable ;

これはless(with (END)) のように動作し、戻るにはless(withqショートカット) を「閉じる」必要があるため、次のクエリを入力するときに前のクエリの結果を読み取ることができません。

逆に、bashクエリの後、結果が表示され、次のクエリを入力できるという動作はありませんか。

質問

zshこの点に関して、どのように動作するようにカスタマイズすればよいでしょうかbash?

答え1

コメントすることで完全にオフにすることもできます

cat ~/.oh-my-zsh/lib/misc.zsh
...
#env_default 'PAGER' 'less'                                                        
#env_default 'LESS' '-R'                                                           
...

次に、新しいターミナルを開いて再試行してください。または...

exec zsh (in the same terminal)

答え2

シェルがPAGER環境変数を設定している可能性があります。

psql を実行する前に設定を解除してみてください:

user@host% unset PAGER

また、postgresql シェルから次のようにして、ページャー pset 値を「オフ」に設定することもできます。

user=> \pset pager off

これにより、ページャーの使用のオン/オフが切り替わります。特定のページャー ( more、、など) を使用するように設定することもできます。lesscat

psql のマニュアルページから詳細情報:

pager

    Controls use of a pager for query and psql help output. If the
environment variable PAGER is set, the output is piped to the
specified program. Otherwise a platform-dependent default (such as
more) is used.

    When the pager is off, the pager is not used. When the pager is on,
the pager is used only when appropriate, i.e. the output is to a
terminal and will not fit on the screen. (psql does not do a perfect
job of estimating when to use the pager.) \pset pager turns the pager
on and off. Pager can also be set to always, which causes the pager to
be always used.

関連情報