smenu は、 sed
編集フィルターであるのと同様に、選択フィルターです。
このツールは、標準入力またはファイルから単語を読み取り、スクロール ウィンドウ内のさまざまなレイアウトで端末画面に表示します。キーボードやマウスを使用してカーソルを簡単に移動すると、1 つまたは複数の単語を選択できます。
smenu の実行開始時と終了時には画面はクリアされないことに注意してください。選択ウィンドウはカーソル位置に表示され、端末の以前の内容は変更されたり失われたりすることはありません。
できるだけ使いやすくするように努めました。 terminfo
データベースで管理されているすべての端末で動作するはずです。
UTF-8
エンコードがサポートされています。このサポートには、全幅文字と拡張書記素クラスターが含まれます。ただし、後者はまだ実験段階であり、WezTerm や iTerm などの適切な端末を使用するとより適切に機能します。
UTF-8
グリフのエンコードも正規形式にする必要があります。正規形式に変換するための努力は行われません。
この小さなプログラムの詳細については、付属の man ページを参照してください。
Wiki には、 smenuのいくつかの概念と機能を詳しく説明するスクリーンショットとアニメーションが含まれています。
一部の Linux ディストリビューションでは、すでにsmenu がパッケージとして提供されていますが、そうでない場合でも、機能的なterminfo
開発プラットフォームが利用可能なシステム上でsmenu を構築できます。これには、私が知っているすべての Unix および Unix 類似のシステムが含まれます。
提供されているbuild.sh
スクリプトを使用して、実行可能ファイルをビルドしてください。このスクリプトは、GNU configure
スクリプトと同じ引数を使用および受け入れます。それらを確認するには、 build.sh --help
と入力します。
ビルド プロセスが完了したら、適切な権限を使用して簡単にmake install
実行します。
このリポジトリでディスカッションを有効にしました。
問題を報告したり、質問したり、機能リクエストを提起したりする際に、どこに連絡するかを決定する際に混乱が生じる可能性があることは承知しています。このセクションは、その点について調整するのに役立つことを目的としています。
次の場合は問題を提起してください。
次の場合はディスカッションを開いてください。
このプログラムはほとんどの Unix で動作しますが、Linux を使用している場合は、シェル プロンプトで次の行を入力してみてください (ここでは"$ "
)。
$ R=$(grep Vm /proc/$$/status | smenu -n20 -W $':tn' -q -c -b -g -s /VmH) $エコー$R
コマンドを待機しているプログラムでは次のようなものが表示されるはずです: (数字は私のものです。あなたの数字は異なります)
Vmピーク| 23840 kB Vmサイズ| 23836 kB VmLck | 0 kB VmHWM | 2936 kB VmRSS | 2936 kB Vmデータ| 1316 kB VmStk | 136 kB VmExe | 28 kB VmLib | 3956 kB VmPTE|64kB VmSwap| 0 KB
カーソルは"VmHWM "
の下にあるはずです。
カーソルを" 136 kB"
に移動し、
でプログラムを終了した後、シェル変数 R には" 136 kB"
が含まれている必要があります。
Unix ブランドに依存しない次のコマンドは、Unix 上に UID が 100 未満のアカウントが 10 個以上ある場合、スクロール ウィンドウを表示します。
$ R=$(awk -F: '$3 < 100 {print $1,$3,$4,$NF}' /etc/passwd | sメニュー -n10 -c) $エコー$R
私の場合( LANG
とLC_ALL
POSIX
に設定されている)、次のように表示されます。
25 25 /bin/bash で sys 0 3 /usr/bin/ksh + ビン 1 1 /bin/bash | デーモン 2 2 /bin/bash | ftp 40 49 /bin/bash | ゲーム 12 100 /bin/bash | lp 4 7 /bin/bash | メール 8 12 /bin/false | 名前は 44 44 /bin/false | ntp 74 108 /bin/false v
スクロール バーの存在に注目してください。
.bashrc
に以下を追加するだけです
EOL=$'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 tests/README.rst
ファイルを読み、既存のテストをモデルとして使用し、 .in
ファイルを作成します。ファイルと.tst
ファイルを作成し、生成されたファイルとともに私に送ってください。
貢献は歓迎されますが、最初に問題で提案を議論するか、メンテナーと議論してください。
好みのオペレーティング システムまたはディストリビューションに合わせてsmenu をパッケージ化するために時間を割いてくださった方々に感謝します。彼らの名前はここで見つけることができます: https://repology.org/project/smenu/information