tmux でワイドターミナル出力を表示する

tmux でワイドターミナル出力を表示する

私は psql を Tmux と Vim で使うのが好きです。Vim を使ってクエリを編集し、別の Tmux ペインの psql に送信します。これは素晴らしいワークフローで、私の意見では DBeaver のような GUI よりもはるかに優れています。しかし:

psql が結果をうまく表示できなくなるには、それほど多くの列は必要ありません。また、psql 出力内の折り返された行は、見栄えが悪くなります。

これまでのところ、私の選択肢は次のとおりです。

拡張モード

を使用する\xと、JSON オブジェクトのように 1 行ずつ表示できます。これはまあまあですが、行同士を比較するには最適ではありません。

フォントを小さくする

楽しく操作すれば、ctrl -ズームアウトして結果を1行で表示できることもあります。言うまでもなく、これは実際には実行可能な解決策ではありません。

tmux で長い行の末尾を切り落とす

図のようにここTmux で行を折り返すのではなく切り捨てることが可能です。

最初の数列だけに興味があるなら、これは素晴らしい方法です。しかし、これは実際には持続可能な作業方法ではありません。最後に列を比較したい場合はどうすればよいでしょうか?


幅の広いテーブルを表示する方法がひどく不十分だと GUI を使用している同僚に笑われずに済むような方法を誰か思いつくでしょうか?

これは psql や Tmux に固有のものである必要はありません。ターミナルを全体的に広くするための方法かもしれません。

答え1

考慮するpspg- PostgreSQL 開発者 Pavel Stěhule によって作成されたページャー。

このページャーは、主にターミナル データベース クライアント向けに設計されています。右にスクロールしながら列を固定するなど、表形式のデータをページングするのに便利な機能が多数あります。pspg は、他のデータベース クライアントや、github プロジェクト ページの例に示されているような csv ファイルでも使用できます。

pspg の使用を開始するには、それをインストールし、環境に PAGER または PSQL_PAGER をエクスポートします (プロジェクト ページから取得)。

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

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

または以下を追加~/.psqlrc

\setenv PAGER pspg

psql シェルを他のクエリ用に準備したまま、分割ペインでページャーを開くこともできます。

~/bin/pspg-ラッパー

#!/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

psqlがtmux開くpspg分割ペインで、そうでなければpspgを実行するだけです。-F出力が1つの画面に収まる場合は、stdoutに直接印刷することを意味します。

答え2

に従ってこのコメントless -Sページャーとして使用することで、左/右スクロールが可能になります。

psql は envvar を尊重するためPAGER、左右のスクロールを実現するには、次のようなエイリアスを作成すると影響が少なくて済みます。

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

これにより、左/右キーを使用して、psql 出力内の幅の広いテーブルを移動できるようになります。これは私にとって非常に良い解決策のように思えます。

関連情報