Просмотр широкого терминала вывода в tmux

Просмотр широкого терминала вывода в tmux

Мне нравится использовать psql с Tmux и Vim, использовать Vim для редактирования моих запросов и отправки их в psql в другой панели Tmux. Это фантастический рабочий процесс, намного превосходящий GUI типа DBeaver, по моему мнению,но:

Не нужно много столбцов, чтобы psql не смог правильно отобразить результаты, а перенос строк в выводе psql выглядит катастрофически.

На данный момент у меня есть следующие варианты:

Расширенный режим

С \xвы можете видеть строки по одной, показанные больше как объект JSON. Это вроде нормально, но ужасно для сравнения строк друг с другом.

Уменьшить шрифт

С помощью веселых ударов ctrl -я иногда могу уменьшить масштаб настолько, чтобы результаты отображались на одной строке. Излишне говорить, что это не совсем работающее решение

Заставить tmux обрезать концы длинных строк

Как показаноздесьможно заставить Tmux обрезать строки вместо их переноса.

Это здорово, если меня интересуют только первые несколько столбцов. Но это не совсем устойчивый способ работы. Что, если я хочу сравнить столбцы в конце?


Может ли кто-нибудь придумать какие-нибудь пути, которые я мог бы изучить, не заставив моих коллег, использующих графический интерфейс, смеяться надо мной из-за моего ужасно неадекватного способа просмотра широких таблиц?

Это не обязательно должно быть специфично для psql или Tmux. Может быть, просто способ сделать терминал шире в целом.

решение1

Учитыватьпспг- пейджер, созданный разработчиком PostgreSQL Павлом Стехуле.

Этот пейджер был разработан в первую очередь для клиентов терминальных баз данных. Он имеет много функций, удобных для разбиения табличных данных, таких как закрепление столбцов при прокрутке вправо. 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 можно оставить готовой к выполнению других запросов.

~/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означает прямую печать на stdout, если вывод помещается на одном экране

решение2

Согласноэтот комментариймы можем получить прокрутку влево/вправо, используя less -Sв качестве пейджера.

Поскольку psql учитывает PAGERenvvar, хорошим и несложным способом добиться прокрутки влево/вправо может стать создание псевдонима, например:

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

Это позволяет использовать клавиши влево/вправо для перемещения по широким таблицам в выводе psql. Мне это кажется довольно хорошим решением.

Связанный контент