在 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 正在运行tmux然后打开普斯普在分割窗格中,否则只需运行 pspg。-F意味着如果输出适合单屏,则直接在标准输出上打印

答案2

按照此评论我们可以使用它less -S作为寻呼机来实现左/右滚动。

由于 psql 尊重PAGER环境变量,实现左/右滚动的一种好的低影响方法可能是创建一个别名,例如:

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

这样就可以使用左/右键在 psql 输出中移动宽表。对我来说,这看起来是一个非常好的解决方案。

相关内容