每個使用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
--no-sleep
在 Cygwin 上使用pspg
時,會報告滾動暫時凍結的情況。我看到 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]