Anzeigen der breiten Terminalausgabe in tmux

Anzeigen der breiten Terminalausgabe in tmux

Ich verwende psql gerne mit Tmux und Vim. Ich verwende Vim, um meine Abfragen zu bearbeiten und sie in einem anderen Tmux-Fenster an psql zu senden. Das ist ein fantastischer Workflow, meiner Meinung nach einer GUI wie DBeaver weit überlegen.Aber:

Es sind nicht viele Spalten nötig, damit psql die Ergebnisse nicht mehr ordentlich anzeigen kann, und umbrochene Zeilen in einer psql-Ausgabe sehen katastrophal aus.

Bisher sind meine Optionen:

Erweiterter Modus

Mit \xkönnen Sie Zeilen einzeln anzeigen, die eher wie ein JSON-Objekt angezeigt werden. Das ist einigermaßen in Ordnung, aber für den Vergleich von Zeilen untereinander schrecklich.

Verkleinern Sie die Schrift

Mit ein bisschen Herumprobieren ctrl -kann ich manchmal weit genug herauszoomen, um die Ergebnisse in einer einzigen Zeile anzuzeigen. Natürlich ist das keine wirklich praktikable Lösung.

Lassen Sie tmux die Enden langer Zeilen abschneiden

Wie gezeigtHierEs ist möglich, Tmux dazu zu bringen, Zeilen abzuschneiden, anstatt sie umzubrechen.

Das ist großartig, wenn ich nur an den ersten paar Spalten interessiert bin. Aber es ist keine wirklich nachhaltige Arbeitsweise. Was ist, wenn ich am Ende Spalten vergleichen möchte?


Kann sich irgendjemand Möglichkeiten vorstellen, die ich erkunden könnte, ohne dass meine GUI-verwendenden Kollegen mich wegen meiner völlig unzureichenden Art, breite Tabellen anzuzeigen, auslachen?

Es muss nicht spezifisch für psql oder Tmux sein. Vielleicht nur eine Möglichkeit, das Terminal allgemein breiter zu machen.

Antwort1

In Betracht ziehenpspg– Pager erstellt vom PostgreSQL-Entwickler Pavel Stěhule.

Dieser Pager wurde in erster Linie für Terminal-Datenbankclients entwickelt. Er verfügt über viele praktische Funktionen zum Paginieren tabellarischer Daten, z. B. zum Fixieren von Spalten beim Scrollen nach rechts. pspg kann mit anderen Datenbankclients oder sogar CSV-Dateien verwendet werden, wie im Beispiel auf der GitHub-Projektseite gezeigt.

Um pspg zu verwenden, installieren Sie es und exportieren Sie PAGER oder PSQL_PAGER in Ihre Umgebung (von der Projektseite übernommen):

#for Postgres 10 and older
export PAGER="pspg"

#for postgres 11 and newer
export PSQL_PAGER="pspg"

oder fügen Sie Folgendes hinzu zu~/.psqlrc

\setenv PAGER pspg

Möglicherweise möchten Sie den Pager auch im geteilten Bereich öffnen und gleichzeitig Ihre PSSQL-Shell für andere Abfragen bereithalten.

~/bin/pspg-wrapper

#!/usr/bin/env bash
if [[ $TMUX ]]
then
    tempfile=$(mktemp)
    cat - > "$tempfile"
    tmux splitw -p 50 "pspg $tempfile"
    unlink "$tempfile"
else # 
    pspg -F
fi

~/.psqlrc

\setenv PAGER ~/bin/pspg-wrapper

Wenn psql läuft intmuxdann öffnenpspgim geteilten Fenster, andernfalls führen Sie einfach pspg aus. -FDas bedeutet, dass direkt auf stdout gedruckt wird, wenn die Ausgabe auf einen einzelnen Bildschirm passt

Antwort2

Gemäßdieser KommentarWir können Links-/Rechts-Scrollen erreichen, indem wir es less -Sals unseren Pager verwenden.

Da psql die PAGERUmgebungsvariable berücksichtigt, könnte eine gute und schonende Methode zum Scrollen nach links/rechts darin bestehen, einen Alias ​​wie den folgenden zu erstellen:

alias psql="PAGER='less -S' psql"

Dadurch können die Links-/Rechtstasten verwendet werden, um sich in breiten Tabellen in der psql-Ausgabe zu bewegen. Das scheint mir eine ziemlich gute Lösung zu sein.

verwandte Informationen