Warum verhält sich zsh beim Abfragen einer (PostgreSQL-)Datenbank wie „less“?

Warum verhält sich zsh beim Abfragen einer (PostgreSQL-)Datenbank wie „less“?

Kontext

  • zshHülse,
  • oh-my-zshRahmen,
  • keine besondere zshKonfiguration erforderlich postgresql.

Problem

Mir ist ein nerviges Verhalten aufgefallen: beim Abfragen der Datenbank, zB:

SELECT * FROM mytable ;

es verhält sich wie less(mit (END)), und beim Zurückgehen muss die Verknüpfung less(mit q) „geschlossen“ werden, was bedeutet, dass ich das Ergebnis einer vorherigen Abfrage nicht lesen kann, wenn ich die nächste eingebe.

Im Gegenteil, bashdieses Verhalten gibt es nicht: Nach einer Abfrage wird das Ergebnis angezeigt und es ist möglich, die nächste Abfrage einzugeben.

Frage

Wie kann ich das anpassen, zshdamit es sich bashdiesbezüglich so verhält?

Antwort1

Sie können es ganz abschalten, indem Sie einen Kommentar abgeben

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

Öffnen Sie dann ein neues Terminal und versuchen Sie es erneut; oder ...

exec zsh (in the same terminal)

Antwort2

PAGEREs ist möglich, dass Ihre Shell die Umgebungsvariable festlegt .

Versuchen Sie, es aufzuheben, bevor Sie psql ausführen:

user@host% unset PAGER

Sie können auch versuchen, den Pager-Pset-Wert in der PostgreSQL-Shell wie folgt auf „Aus“ zu setzen:

user=> \pset pager off

Damit schalten Sie die Verwendung des Pagers ein oder aus. Sie können auch festlegen, dass ein bestimmter Pager verwendet wird (z. B. more, less, cat, usw.).

Weitere Informationen von der psql-Manpage:

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.

verwandte Informationen