smenu是一個選擇過濾器,就像sed
是一個編輯過濾器一樣。
該工具從標準輸入或文件中讀取單詞,並在滾動視窗中以不同的佈局將它們呈現到終端螢幕上。使用鍵盤和/或滑鼠可以輕鬆移動遊標,從而可以選擇一個或多個單字。
請注意,在選單執行開始和結束時,螢幕不會被清除。遊標所在位置顯示選擇窗口,終端機之前的內容既不被修改,也不遺失。
我已盡力使其盡可能易於使用。它應該適用於terminfo
資料庫中管理的所有終端。
支援UTF-8
編碼。此支援包括雙角字符和擴展字素簇。然而,後者仍處於實驗階段,如果使用適當的終端(例如 WezTerm 或 iTerm),效果會更好。
UTF-8
字形的編碼也必須採用規範形式,因為我們不會努力將它們採用這種形式。
請參閱附帶的手冊頁以了解有關此小程序的更多資訊。
該 wiki 包含螢幕截圖和動畫,詳細介紹了smenu的一些概念和功能。
一些 Linux 發行版已經將smenu作為軟體包提供,如果沒有,則可以在任何具有功能性terminfo
開發平台的系統上建立smenu 。這包括我所知道的所有 Unix 和類別 Unix 系統。
請使用提供的build.sh
腳本來建立可執行檔。腳本使用並接受與 GNU configure
腳本相同的參數,輸入build.sh --help
即可查看它們。
建置過程完成後,只需使用適當的權限進行簡單的make install
即可完成。
我已啟用此存儲庫上的討論。
我知道在決定報告問題、提出問題或提出功能請求時應該在哪裡進行溝通時可能會出現一些困惑,因此本節旨在幫助我們在這一點上保持一致。
若出現以下情況,請提出問題:
若出現以下情況,請展開討論:
該程式應該可以在大多數 Unix 上運行,但如果您使用的是 Linux,請嘗試在 shell 提示符號下鍵入以下行(此處: "$ "
):
$ R=$(grep Vm /proc/$$/status | smenu -n20 -W $':tn' -q -c -b -g -s /VmH) $迴聲$R
現在應該在程式等待命令時顯示類似這樣的內容:(數字是我的,你的會有所不同)
VmPeak| 23840 kB 虛擬機器大小| 23836 kB VmLck | 0 kB VmHWM | 2936 kB VmRSS | 2936 kB 虛擬機器資料| 1316 kB VmStk | 136 kB VmExe | 28 kB VmLib | 3956 kB VmPTE | 64 kB VmSwap 0 kB
遊標應位於"VmHWM "
下方。
將遊標移到" 136 kB"
並使用
結束程式後,shell 變數 R 應包含: " 136 kB"
。
如果您的 Unix 上有超過 10 個 UID 低於 100 的帳戶,以下命令與 Unix 品牌無關,應該會為您提供一個滾動視窗:
$ R=$(awk -F: '$3 < 100 {印出 $1,$3,$4,$NF}' /etc/passwd | s菜單-n10-c) $迴聲$R
在我的( LANG
和LC_ALL
設定為POSIX
)上顯示:
在 25 25 /bin/bash 系統 0 3 /usr/bin/ksh + bin 1 1 /bin/bash | bin 1 1 守護程式 2 2 /bin/bash | ftp 40 49 /bin/bash | ftp 40 49 遊戲 12 100 /bin/bash | lp 4 7 /bin/bash | 郵件 8 12 /bin/false | 命名為 44 44 /bin/false | ntp 74 108 /bin/假 v
請注意滾動條的存在。
只需在.bashrc
中添加以下內容
停產=$'n' 綁定 -x '"Cr": READLINE_LINE=$(fc -lr 1 | sed "s/[1-9][0-9]*..//" | smenu -Q -l -ac:7/4,b -W"$EOL") READLINE_POINT=${#READLINE_LINE}'
啟動或重新啟動bash並按CTRL-R
(按CTRL-C
或q
退出),享受吧!
您也可以新增參數-d來指示smenu在選擇條目後清理選擇視窗。
這些版本使用名為ctxopt的新選項系統,該系統可能包含錯誤。請報告它們,以便在下一版的smenu或ctxopt (https://github.com/p-gen/ctxopt) 中修復它們。
由於這個新的選項管理系統,在某些情況下可能還需要重新排列命令列參數。很抱歉這可能需要額外的工作。
不考慮用從右到左的語言(例如波斯語或希伯來語)書寫的行的右對齊。
附帶的測試系統還比較年輕,請大家諒解。
重要的是測試系統有一些依賴性,請在繼續之前閱讀test/README.rst
。
注意透過在tests
目錄中執行./tests.sh
來執行所有測試將需要一些時間(目前大約 21 分鐘)。
請注意,在某些系統(例如 *BSD)上,某些測試可能會失敗。這可以透過 posix/libc/... 實現的差異來解釋。當使用某些特定的正規表示式或不常見的UTF-8
位元組序列時,尤其會發生這種情況。
如果測試因未知原因失敗,請將其目錄名稱和相應的.bad
檔案寄給我。
如果您遇到了沒有測試涵蓋的錯誤,那麼您可以在現有或新目錄中的tests
目錄中建立新測試:閱讀tests/README.rst
文件,使用現有測試作為模型,建立.in
文件和.tst
文件並將它們以及生成的文件發送給我。
歡迎貢獻,但首先在問題中或與維護者討論您的建議。
我要感謝那些花時間為他們喜歡的作業系統或發行版打包smenu 的人。您可以在這裡找到他們的名字:https://repology.org/project/smenu/information