每个使用psql
的人也都使用less
分页器。虽然它运行良好,但对表格数据没有特殊支持。我找到了一些项目,但没有一个足够好用于此目的。因此,我决定编写一个小型专用分页器来用作psql
分页器。
该寻呼机也可以从以下命令行客户端使用:
mysql
sqlite
pgcli
monetdb
Trino (formerly Presto SQL)
usql
sqlcl
(适用于 Oracle)nushell
mcview
或FoxPro
- http://okbob.blogspot.com/2019/12/pspg-themes-what-you-use-it.htmlpspg
可以简单地从 Debian (Ubuntu) 存储库安装。 RedHat (Fedora) 存储库也包含pspg
:
# Debian (Ubuntu)
sudo apt-get install pspg
# RedHat (Fedora)
sudo dnf install pspg
基本配置非常简单 - 只需设置系统环境变量PSQL_PAGER
:
export PSQL_PAGER='pspg -X -b'
不支持 MS Windows 上的本机安装,但pspg
在wsl2
内运行良好。在 wsl2 环境中,安装与使用的 Linux 系统上相同。
通过brew install pspg
在 macOS/homebrew 上安装很简单。
[pavel@localhost ~]$ pspg --help
pspg is a Unix pager designed for table browsing.
Usage:
pspg [OPTION] [file]
General options:
--about about authors
--help show this help
-V, --version show version
--info show info about libraries and system
--direct-color force direct-color terminal mode
-f, --file=FILE open file
-F, --quit-if-one-screen
quit if content is one screen
--clipboard-app=NUM specify app used by copy to clipboard (1, 2, 3, 4)
--esc-delay=NUM specify escape delay in ms (-1 inf, 0 not used, )
--interactive force interactive mode
--ignore_file_suffix don't try to deduce format from file suffix
--ni not interactive mode (only for csv and query)
--no-watch-file don't watch inotify event of file
--no-mouse don't use own mouse handling
--no-progressive-load don't use progressive data load
--no-sigint-search-reset
without reset searching on sigint (CTRL C)
--no-sleep without waits against flickering
--no_xterm_mouse_mode don't use optional xterm mouse mode
--only-for-tables use std pager when content is not table
--on-sigint-exit exit on sigint(CTRL C or Escape)
--pgcli-fix try to fix some pgcli related issues
--querystream read queries from stream forever
--quit-on-f3 exit on F3 like mc viewers
--rr=ROWNUM rows reserved for specific purposes
--stream read input forever
-X, --reprint-on-exit preserve content after exit
Output format options:
-a, --ascii force ascii
-b, --blackwhite black-white style
-s, --style=N set color style number (0..22)
--bold-labels row, column labels use bold font
--bold-cursor cursor use bold font
--border type of borders (0..2)
--double-header header separator uses double lines
--force-uniborder replace ascii borders by unicode borders
--highlight-odd-rec highlights odd records (when it is supported by style)
--hide-header-line hides header line (between column names and data)
--ignore-short-rows rows with wrong column numbers are ignored
--null=STRING STRING used instead NULL
Searching options
-g --hlite-search, -G --HILITE-SEARCH
don't highlight lines for searches
-i --ignore-case ignore case in searches that do not contain uppercase
-I --IGNORE-CASE ignore case in all searches
Interface options:
-c, --freezecols=N freeze N columns (0..9)
--less-status-bar status bar like less pager
--line-numbers show line number column
--menu-always show top bar menu every time
--no-bars, --no-commandbar, --no-topbar
don't show bottom, top bar or both
--no-cursor row cursor will be hidden
--no-last-row-search don't use the last pattern when starting a new search
--no-scrollbar don't show scrollbar
--no-sound don't use beep when scroll is not possible
--tabular-cursor cursor is visible only when data has table format
--vertical-cursor show vertical column cursor
Input format options:
--csv input stream has csv format
--csv-separator char used as field separator
--csv-header [on/off] specify header line usage
--skip-columns-like="SPACE SEPARATED STRING LIST"
columns with substr in name are ignored
--csv-trim-width=NUM trim value after NUM chars
--csv-trim-rows=NUM trim value after NUM rows
--tsv input stream has tsv format
On exit options:
--on-exit-reset sends reset terminal sequence "33c"
--on-exit-clean sends clean terminal sequence " 33[2J"
--on-exit-erase-line sends erase line terminal sequence "33[2Kr"
--on-exit-sgr0 sends sgr0 terminal sequence " 33[0;10m"
Watch mode options:
-q, --query=QUERY execute query
-w, --watch time the query (or read file) is repeated every time (sec)
Connection options:
-d, --dbname=DBNAME database name
-h, --host=HOSTNAME database server host (default: "local socket")
-p, --port=PORT database server port (default: "5432")
-U, --username=USERNAME database user name
-W, --password force password prompt
Debug options:
--log=FILE log debug info to file
--wait=NUM wait NUM seconds to allow attach from a debugger
pspg 与 less 分页器或 vi 编辑器共享许多关键命令。
选项也可以在PSPG
环境变量中传递。首先处理配置文件。 PSPG
变量中的选项在步骤之后处理,命令行选项在最后处理。一个选项可以被处理多次,最后一个值获胜。
姓名 | 用法 |
---|---|
PSPG | 可以保存与命令行相同的选项 |
PSPG_CONF | 配置文件的路径 |
PSPG_HISTORY | pspg 的 readline 历史文件的路径 |
字段名称可能与相关命令行选项不同:
ascii_menu = false
bold_labels = false
bold_cursor = false
ignore_case = false
ignore_lower_case = false
no_cursor = false
no_sound = false
no_mouse = false
less_status_bar = false
no_highlight_search = false
no_highlight_lines = false
force_uniborder = false
show_rownum = false
without_commandbar = false
without_topbar = false
vertical_cursor = false
on_sigint_exit = false
no_sigint_search_reset = false
double_header = false
quit_on_f3 = false
pgcli_fix = false
xterm_mouse_mode = true
show_scrollbar = true
menu_always = false
empty_string_is_null = true
last_row_search = true
progressive_load_mode = true
highlight_odd_rec = false
hide_header_line = false
on_exit_reset = false
on_exit_clean = false
on_exit_erase_line = false
on_exit_sgr0 = false
direct_color = false
theme = 16
border_type = 2
default_clipboard_format = 0
clipboard_app = 0
hist_size = 500
esc_delay = -1
代码 | 姓名 |
---|---|
0 | 黑与白 |
1 | 午夜指挥官喜欢 |
2 | 喜欢 FoxPro |
3 | 类似 Pd 菜单 |
4 | 白色主题 |
5 | 杂种狗喜欢 |
6 | PCF 和喜欢 |
7 | 绿色主题 |
8 | 蓝色主题 |
9 | 词完美就像 |
10 | 低对比度蓝色主题 |
11 | 深青色/黑色模式 |
12 | 似悖论 |
13 | dBase IV 复古风格 |
14 | dBase IV 复古风格(洋红色标签) |
15 | 红白主题 |
16 | 简单的主题 |
17 号 | 晒黑主题 |
18 | 日光主题 |
19 | Gruvbox 浅色主题 |
20 | 道光主题 |
21 | 纯白主题 |
22 号 | 关系管道主题 |
23 | 纸张颜色主题 |
请参阅http://okbob.blogspot.cz/2017/07/i-hope-so-every-who-uses-psql-uses-less.html
可以通过引用内置主题的基本模板和菜单模板来自定义主题。自定义主题文件应保存在具有pspg
配置的目录中。该文件的名称应为 .pspg_theme_xxx。可以通过命令行选项--custom-style=name
或命令ctheme name
选择自定义主题。
自定义主题文件示例(名为.pspg_theme_mc2
(可以通过命令ctheme mc2
激活)):
template = 1
template_menu = 3
background = black, white
data = black, white
label = black, white, italic, bold
border = #000000, white
footer = lightgray, white
cursor_data = blue, white, italic, bold, dim, reverse
cursor_border = blue, blue , italic, bold, dim, reverse
cursor_label = blue, white, italic, bold, dim, reverse
cursor_footer = blue, white, italic, bold, dim, reverse
cursor_bookmark = red, white, italic, bold, dim, reverse
cross_cursor = white, blue, italic, bold
cross_cursor_border = brightblue, blue
status_bar = black, lightgray
title = black, lightgray
scrollbar_arrows = black, white
scrollbar_background = lightgray, white
scrollbar_slider = white, gray
某些键可以用符号*
标记。标记键用于奇数记录。
data* = black, lightgray
label* = black, lightgray, italic, bold
border* = #000000, lightgray
template
和template_menu
为自定义主题中未指定的任何键设置后备值。尤其是template_menu
是目前自定义 F9 菜单外观的唯一方法。
钥匙 | 定制 |
---|---|
background | 背景颜色 |
data | 数据(非标题或冻结列)文本 |
border | 边框颜色 |
label | 标签(标题或冻结列)文本 |
row_number | 行号 |
record_number | |
selected_area | |
footer | 结果页脚(非表格,例如行数) |
cursor_data | 突出显示的数据(非标题或冻结列)文本 |
cursor_border | 突出显示的边框颜色 |
cursor_label | 突出显示的标签(标题或冻结列)文本 |
cursor_row_number | 突出显示的行号 |
cursor_record_number | |
cursor_selected_area | |
cursor_footer | 突出显示的结果页脚(非表格,例如行数) |
scrollbar_arrows | 滚动条向上和向下箭头 |
scrollbar_background | 滚动条“空”背景 |
scrollbar_slider | 背景上的滚动条滑块 |
scrollbar_active_slider | 滚动条滑块被鼠标抓住 |
title | 结果标题(在 psql 描述命令中) |
status_bar | 热门查询和光标位置信息 |
prompt_bar | |
info_bar | 信息文本(例如搜索时“未找到”) |
input_bar | 输入提示和文字(例如搜索) |
error_bar | |
bookmark | |
bookmark_border | |
cursor_bookmark | |
cross_cursor | 水平和垂直光标交叉处突出显示的单元格 |
cross_cursor_border | 水平和垂直光标交叉处的边框 |
matched_pattern | 搜索结果匹配文本 |
matched_pattern_nohl | |
matched_line | 包含搜索结果的行 |
matched_line_border | 搜索结果行的边框 |
matched_pattern_cursor | 突出显示的搜索结果匹配文本 |
matched_line_vertical_cursor | 垂直突出显示的搜索结果匹配文本 |
matched_line_vertical_cursor_border | 垂直突出显示的单元格的边框与搜索结果匹配 |
error |
ANSI 颜色Black
、 Red
、 Green
、 Brown
、 Blue
、 Magenta
、 Cyan
、 LightGray
、 Gray
、 BrightRed
、 BrightGreen
、 Yellow
、 BrightBlue
、 BrightMagenta
、 BrightCyan
、 White
和Default
将在终端仿真器配置时显示。或者,您可以指定十六进制 RGB 值#FF00FF
。
样式可以是以下任意组合: bold
、 italic
、 underline
、 reverse
、 standout
、 dim
。
如果某个键的格式不正确,则忽略该行。为了调试自定义主题,最好使用选项--log
启动pspg
。有关损坏的定义的信息存储在日志文件中。
钥匙 | 命令 |
---|---|
0、1、2、3 、 .. 、 9 | 冻结前 N 列 |
按键_UP , k | 向后导航一行 |
按键按下, j | 向前导航一行 |
左键, h | 向左滚动 |
右键, l | 向右滚动 |
Ctrl + KEY_LEFT | 向左滚动一个字符 |
Ctrl + KEY_RIGHT | 向右滚动一个字符 |
Shift + KEY_LEFT | 向左滚动一列 |
Shift + KEY_RIGHT | 向右滚动一列 |
Ctrl +主页, g | 转到文件开头 |
Ctrl +结束, G | 转到文件末尾 |
Alt + l | 转到行号 |
H | 转到当前窗口的第一行 |
中号 | 转到当前窗口的一半 |
L | 转到当前窗口的末尾 |
页面, Ctrl + b | 向后一窗 |
NPAGE 、 Ctrl + f 、空格 | 向前一窗 |
家, ^ | 转到行首、第一列 |
结束, $ | 转到行尾,最后一列 |
Ctrl + e | 向下滚动窗口 |
Ctrl + y | 向上滚动窗口 |
Ctrl + d | 向前半个窗口 |
Ctrl + u | 向后半个窗户 |
s | 将内容保存到文件 |
/ | 搜索将带您到下一个出现的模式 |
? | 搜索一个模式,将您带到上一个出现的位置 |
n | 下一场比赛 |
氮 | 下一场相反方向的比赛 |
c | 栏目搜索 |
Alt + / | 在选定区域内搜索模式 |
Alt + ? | 在选定区域内向后搜索模式 |
Alt + c | 开关(开、关)画线光标 |
阿尔特+米 | 开关(开、关)自己的鼠标处理程序 |
Alt + n | 开关(开、关)绘图线号 |
Alt + v ,双击列标题 | 开关(开、关)绘图列光标 |
鼠标滚轮 | 垂直滚动 |
Alt +鼠标滚轮 | 水平滚动 |
F9 | 显示菜单 |
q 、 F10 、 Esc 0 | 辞职 |
Alt + q | 退出并打印原始(未格式化)内容 |
Alt + k 、 Alt +双击 | 切换书签 |
Alt + j | 转到下一个书签 |
阿尔特+我 | 转到上一个书签 |
Alt + o | 齐平书签 |
一个 | 升序排序 |
d | 排序后代 |
你 | 未排序(按来源顺序排序) |
空间 | 在观看模式下停止/继续 |
右 | 重绘屏幕并刷新输入文件 |
INS | 将行、列或单元格导出到默认目标 |
Shift +光标... | 定义范围 |
F3 | 选择行的开始/结束 |
Shift + F3 | 选择块的开始/结束 |
Ctrl +拖动鼠标 | 定义行选择,在列标题上定义列选择 |
Ctrl + o | 显示主屏幕,按任意键再次返回寻呼机 |
% 、 Ctrl + a | 选择全部 |
命令 | 描述 |
---|---|
N | 转到行号 |
+N | 前进N行 |
-N | 向后移动 N 行 |
N+ | 转到行号 |
N- | 从末尾转到行号 |
theme N | 设置主题编号 |
copy [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | 将数据复制到剪贴板 |
save [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | 将数据复制到剪贴板 |
order [N|column name] | 按列排序 |
orderd [N|column name] | desc 按列排序 |
sort [N|column name] | 按列排序 |
sortd [N|column name] | desc 按列排序 |
dsort [N|column name] | desc 按列排序(别名) |
rsort [N|column name] | desc 按列排序(别名) |
asc [N|column name] | 按列(别名)排序 |
desc [N|column name] | desc 按列排序(别名) |
search [back] [selected] [column name] [string|"string"] | 在数据中搜索字符串 |
当名称以管道符号开头时,输出可以重定向到任何命令:
copy csv | less
按q或F10或Esc 0键可以结束寻呼机。使用选项--on-sigint-exit
然后按Ctrl + c或Esc Esc键关闭寻呼机。
pspg 支持使用Esc键序列,而不是Alt +键的组合。按Esc和按键之间的间隔受到选项esc-delay
或配置选项esc_delay
指定的间隔的限制。这是最大延迟时间(以毫秒为单位)。在此间隔之后,单击Esc会被解释为Escape
。 -1 表示无限制,0 表示禁用此功能。
列搜索每次都不区分大小写。搜索列由垂直光标标记。当当前搜索模式为空字符串时,使用最后一个非空字符串搜索模式。搜索在可见的垂直列之后或在第一个可见的未冻结列(在一些水平滚动之后)或在第一列上开始。最后一列搜索后再次从第一列开始。
要获得剪贴板支持,应安装剪贴板应用程序: 1. wl-clipboard (Wayland)、2. xclip (xwindows)、3. pbcopy (MacOS) 或 4.clip.exe (WSL2)。
pspg
每次都会尝试将 unicode 符号“∅”转换为 NULL。如果您不使用pset null ...
进行特殊设置,则psql
将显示空字符串而不是 NULL。 pspg
对于这种情况没有任何特殊检测(在导出例程中)。您应该检查并启用或禁用菜单项Empty string is NULL
。
pspg
可以自动检测剪贴板应用程序。不幸的是,这种检测不适用于相同的情况。您可以通过在--clipboard-app
选项中指定数字(1,2,3,4)来指定应用程序。
格式有所不同! pspg 默认以 CSV 格式复制记录,该格式使用逗号分隔符并修剪首字母和尾随空格。使用“格式化文本”准确复制查询输出,或选择其他可用选项之一。
V: [d/d d..d]
- 垂直光标:(列号)/(列)(字符位置从)..(字符位置到)FC: d
- 冻结列长度(以字符为单位)C: d..d/d
- 字符中解冻的可见数据(从 .. 到)/(总计)L:[d + dd/d]
- 行数(第一个可见行数)+(显示行数),(当前行)/(行数)d%
- 已显示数据的百分比它与米勒配合良好http://johnkerl.org/miller/doc/index.html
mlr --icsv --opprint --barred put '' obce.csv | mlr --icsv --opprint --barred put '' obce.csv | pspg --强制-uniborder
新版本集成了 csv 支持 - 只需使用--csv
选项。
可以集成到mc
中
/etc/mc/mc.ext
复制到~/.config/mc directory
##csv 正则表达式/.csv 查看=pspg -f %f --csv
mc
pspg
时,会报告滚动暂时冻结的情况。在这种情况下,请使用选项--no-sleep
。我看到 konsole(KDE 终端)内滚动缓慢(通过滚动条)。选项--no-sleep
也有帮助。 查询结果每n秒刷新一次。 pspg
记住光标行、可能的垂直光标、可能的顺序。应按空格键暂停刷新。重复按此键可再次刷新。
pspg
在可用时使用 inotify API,并且当输入文件更改时, pspg
立即重新读取文件。可以通过选项--no-watch-file
或通过选项--watch
指定监视时间来禁用此行为。
pspg
可以从管道、命名管道或文件(使用选项--stream
读取连续的表格数据流,或者可以从管道或文件(使用选项--querystream
)读取查询流。在流模式下,只能处理表格式的数据,因为pspg
使用空行作为表之间的分隔符。
查询流模式是由字符 GS 分隔的 SQL 语句序列(组分隔符 - 分隔行上的 0x1D。
pavel@localhost ~]$ cat < /dev/pts/3 > ~/pipe 选择 10 ^] 选择20 ^] 选择 * 从 pg_class ^]
您应该添加到您的个人资料中:
#for Postgres 10 及更早版本 导出 PAGER="pspg" #对于 postgres 11 及更新版本 导出 PSQL_PAGER="pspg" #或“setenv PAGER pspg”到.psqlrc
和.psqlrc
设置安静 1 pset 线条样式 unicode pset 边框 2 pset null ∅ 取消设置安静
一些可能的配置:
-- 使用 :x 和 :xx 命令切换寻呼机 set x '\setenv PAGER less' set xx '\setenv PAGER 'pspg -bX --no-mouse'' :xx
LC_CTYPE
应该是正确的。主要是当您使用 unicode 边框时。如果没有正确设置此变量,ncurses 不会显示 unicode 边框(由psql
生成)。可以检查值“C.UTF8”。
当您使用选项--only-for-tables
时,那么
PAGER
设置为pspg
并将PSQL_PAGER
设置为less
或PAGER
设置为less
,将PSQL_PAGER
设置为pspg
MariaDB [sakila]> 寻呼机 pspg -s 14 -X --force-uniborder --quit-if-one-screen 寻呼机设置为“pspg -s 14 -X --force-uniborder --quit-if-one-screen” MariaDB [sakila]> 现在选择(); MariaDB [sakila]> select * from Nicer_but_slower_film_list limit 100;
SQLite 本机客户端不会产生格式良好的输出,但可以强制生成 CSV 格式 - 并且这种格式对于pspg
来说很容易读取
sqlite3 -csv -header testdb.db 'select * from foo2' | pspg --csv --csv-header=on --double-header
pgcli 需要以下配置选项( ~/.config/pgcli/config
):
pager = /usr/bin/pspg --csv --rr=2 --quit-if-one-screen --ignore-case --csv-header on --pgcli-fix
table_format = csv
旧版本的 pgcli 以表格格式输出非常慢。解决方法是使用 csv 格式。当性能问题得到解决后,这在当前版本上应该是不必要的。选项--pgcli-fix
修复了由pgcli
生成的部分损坏的 csv 格式的导入。现代版本的pgcli
不需要 csv 格式,也不需要--pgcli-fix
选项。
pager = /usr/bin/pspg --rr=2 --quit-if-one-screen --ignore-case
由于sqlcl
目前不直接支持寻呼机选项,因此您可以使用 qsh 等工具来解决此问题,或使用此存储库中的 pspg.sql 脚本。
要使用该脚本,请启动sqlcl
如下所示(传递当前 tty 的详细信息很重要):
$ TTY=$(tty) sqlcl system/system @/path/to/pspg.sql
您现在可以将查询结果发送到pspg
如下所示:
SQL> pspg select * from user_tables;
pspg
支持默认的table_mode
: rounded
和table_mode
: heavy
。
也可以使用 csv 转换。
sys | get cpu | to csv | pspg --csv
注意: footer_mode
应该被禁用
努壳配置:
$env.config.footer_mode = never
$env.config.table.header_on_separator = false
$env.config.ls.clickable_links = false
$env.config.table.mode = rounded
pspg 尝试使用 xterm 鼠标模式 1002,当终端和 ncurses 不是太古老时。如果使用时出现问题 - 当按下某个鼠标按钮时用鼠标移动时出现不需要的视觉伪像,则 1. 请报告问题(请附加日志文件),2. 使用选项--no-xterm-mouse-mode
和pspg
不会尝试激活此模式。
在我的 Fedora 上,这个终端无法正确显示真彩色主题。基本问题在于默认的TERM
设置,即xterm-256color
。不幸的是, konsole
终端与xterm
不完全兼容,并且不允许更改颜色。您可以使用选项--direct-color
或设置TERM=xterm-direct
强制使用直接颜色。第二个选项是将TERM
变量更正确地设置为konsole-256color
。在这种情况下, pspg
会将真实的 RGB 颜色映射到支持的 256 种颜色。
一些链接器问题可以通过以下方式修复:
我改变了 gcc -lncursesw pager.c -o pspg -ggdb 到 gcc pager.c -o pspg -ggdb -lncursesw
如果你想使用pspg
作为 Postgres 客户端,那么你需要运行configure --with-postgresql=yes
。在具有自己的 Postgres 构建的 Fedora 上,我必须安装openssl-devel
软件包,并且必须设置export PKG_CONFIG_PATH="/usr/local/pgsql/master/lib/pkgconfig/"
。
在 FreeBsd 上,您应该使用gmake
而不是make
。
从源代码编译代码时,请先运行 ./configure。有时先./autogen.sh
如果要显示 UTF-8 字符,则pspg
应与ncursesw
库链接。使用库ncursesw
时,UTF-8 字符显示效果很差。您也可以看到区域设置不正确的损坏字符。
您可以通过pspg --version
检查宽字符支持。预计 Row ncurses with wide char support
。使用--with-ncursesw
选项重新运行configure
。当此命令失败时,检查是否安装了 ncursesw 库的开发包。
# brew install pspg
你可以在没有brew
情况下轻松编译pspg
,但是你需要gnu readline
库。 MacOS 默认使用通过 libedit 模拟的 readline,但pspg
需要完整的 gnu readline 库。
LDFLAGS="-L/usr/local/opt/readline/lib" CPPFLAGS="-I/usr/local/opt/readline/include" ./configure
LDFLAGS="-L/usr/local/opt/readline/lib" CPPFLAGS="-I/usr/local/opt/readline/include" make
# apt-cache search pspg
# apt-get install pspg
# dnf install pspg
pspg 可从社区存储库 https://yum.postgresql.org/packages.php 获取
# apk add pspg
# emerge -av dev-db/pspg
Arch 用户存储库包含两个版本:
master
分支。使用您选择的 AUR 帮助程序或 git 和makepkg
来安装 pspg。
# pkg install pspg
# pkg_add pspg
更多相关信息
# port install pspg
pspg
可以通过使用 wsl2 在 MS Windows 上简单地使用。我测试了它,它可以正常工作,没有问题。
在终端中执行wsl --install -d Ubuntu-22.04
在终端中打开 Ubuntu 会话
sudo apt-get update
sudo apt-get install pspg
sudo apt-get install postgresql postgresql-contrib
# set password for user postgres
sudo passwd postgres
su - postgres
psql postgres
>> create role pavel login;
q
exit
touch ~/.psqlrc
mcedit .psqlrc
pset linestyle unicode
pset border 2
setenv PSQL_PAGER 'pspg -b -X'
# press F2 and F10
psql postgres
与 Ubuntu (Debian) 上的安装和工作没有任何区别
pspg
尚未移植到 MS Windows。存在对 ncurses 和正确(完全)实现的函数newterm
的依赖( pdcurses
仅在 Unix 平台上执行此操作)。它也许可以与 WSL2 一起工作(我没有测试它)。另一种方法是使用less
寻呼机,将其移植到某些 MS Win 环境中。 less
依赖于termcap
,并且它比pspg
更便携( termcal
是 ncurses 的低层)。 less
支持固定行,并且使用--chop-long-lines
选项或仅-S
可以用作pspg
的分页器。
export PSQL_PAGER="less --chop-long-lines --header 1"
有一些问题需要手动更改代码才能成功编译 - 我们成功测试了pspg
,但尽管pspg
与 ncursesw 库链接,但 utf8 编码支持无法完全正常工作 - 可能是由于libc
库中的一些问题。编码为 3 个字节的字符存在问题 - unicode 边框,.. 两个字节的 unicode 字符应该可以很好地显示。
您可以将pspg
与通常的重音字符一起使用,但不应使用 unicode 边框。用特殊边框字符(通过 ncurses 技术)替换 ascii 边框效果很好 - 查看Options|Force unicode borders
选项。
Solaris make
不支持条件语句 - 应删除因此,从Makefile
中删除不支持的功能( ifdef
、 endif
),首先用include
替换-include
。
运行configure
后,从config.make
中删除termcap
库上的链接。它是readline
automake 脚本产生的垃圾。与ncurses
库结合会产生一些链接问题。
export CURSES_CFLAGS="-I/usr/include/ncurses/"
export PANEL_LIBS="-lpanelw"
./configure
export CFLAGS="-m64 -I/opt/csw/include"
export LDFLAGS="-L/opt/csw/lib/64 -R/opt/csw/lib/64"
export PKG_CONFIG_PATH="/opt/csw/lib/64/pkgconfig"
./configure
以某种列格式存储数据(现在数据像行数组一样存储)。通过此更改,可以对列进行操作 - 隐藏列、更改宽度、对列进行循环迭代、更改列顺序、标记列以及仅导出选定的列(选定的行)。
通过一些更智能的结构替换直接打印文档到 ncurses 窗口。内部有很多检查和修复来支持复杂的动态布局。可能的视图应该记住第一行、最后一行、当前行。现在,这些数据位于全局变量或 DataDesc 和 ScrDesc 结构中。
该项目使用 st_menu 库 - ncurses 的 CUA 菜单栏和下拉菜单的实现 https://github.com/okbob/ncurses-st-menu
如果您喜欢,请从您的祖国寄一张明信片到我的地址,请:
Pavel Stehule
Skalice 12
256 01 Benesov u Prahy
Czech Republic
如果有任何问题、评论、错误报告、补丁,请发送至邮件地址 [email protected]