在 tmux 中查看寬終端輸出

在 tmux 中查看寬終端輸出

我喜歡將 psql 與 Tmux 和 Vim 一起使用,使用 Vim 編輯我的查詢並將它們發送到另一個 Tmux 窗格中的 psql。這是一個非常棒的工作流程,在我看來遠遠優於像 DBeaver 這樣的 GUI,:

psql 不需要太多列就無法很好地顯示結果,而且 psql 輸出中的換行看起來是災難性的。

到目前為止我的選擇是:

擴展模式

\x可以看到一次顯示一行,更像 JSON 物件。這還可以,但是對於相互比較行來說就很糟糕了。

把字體調小一點

透過一些愉快的抨擊,ctrl -我有時可以縮小到足夠遠,以便將結果顯示在一行上。不用說,這並不是一個真正可行的解決方案

讓 tmux 砍掉長行的末端

如圖所示這裡可以讓 Tmux 截斷行而不是換行。

如果我只對前幾列感興趣,這非常棒。但這並不是真正可持續的工作方式。如果我想在最後比較列怎麼辦?


誰能想到我可以探索的任何途徑,不會讓使用 GUI 的同事嘲笑我查看寬表的方式非常不充分?

它不必特定於 psql 或 Tmux。也許只是一種讓終端更寬的方法。

答案1

考慮聚苯乙烯- 由 PostgreSQL 開發人員 Pavel Stěhule 創建的尋呼機。

此尋呼機主要是為終端資料庫用戶端設計的。它具有許多方便對錶格資料進行分頁的功能,例如在向右捲動時固定列。 pspg 可以與其他資料庫用戶端甚至 csv 檔案一起使用,如其 github 專案頁面的範例所示。

要開始使用 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 shell 為其他查詢做好準備。

〜/ 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 正在運行多路復用器然後打開聚苯乙烯在分割窗格中,否則只需執行 pspg。-F表示如果輸出適合單螢幕,則直接在標準輸出上列印

答案2

按照這則評論less -S我們可以透過使用尋呼機來實現左/右滾動。

由於 psql 尊重PAGER環境變量,因此實現左/右滾動的一種不錯的低影響方法可能是創建一個別名,例如:

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

這允許使用左/右鍵在 psql 輸出中的寬表中移動。對我來說這看起來是一個非常好的解決方案。

相關內容