2

私は、チームの他のメンバーと mdash に役立つ可能性がある、作業固有のヘルパー関数をいくつか作成しました。しかし、私はそれらをすべて Emacs の Elisp で書いたので、それらを Notepad++ から変換することはできません。

そこで、関数をPerlに変換しようと考えています。問題ない。

ただし、応答を制限するために常に ido-completion を使用しています。

  (setq client (ido-completing-read "Select a Client: " '("IniTrade" "HedgeCorp" "GlobalTech" "OCP") nil t))

編集: ido-completing-read は、すべてのオプションが表示され、サイクリング [通常は矢印キー] または入力補完によって選択できることを除いて、 completed-read と似てます。上記の例では、プロンプトは次のようになります。

  Select a Client: {IniTrade | HedgeCorp | GlobalTech | OCP}

RET を押すか、部分的に入力することで、一番左の項目を選択できます (この場合、最初の文字はすべて一意であるため、必要なのはそれだけで、一致する項目が一番左になります)。

例の nil は未使用のパラメーターですが、"t" は完全に一致する必要があります。たとえば、ユーザーはいずれかを選択する必要があります。この関数は、「IniTrade」などの文字列を返します。

私の「ヘルパー関数」は、特定のエラーログを開く、サーバーにバッチを復元するなどの内部ニーズのためのものです。これらの操作では、ユーザーはテストまたは実稼働環境、クライアント、ステージなどを指定する必要があります。ほとんどの場合、これらは別のシェルコマンドを構築するために使用される文字列の選択です。数値アイテムが返された場合は、文字列に再変換できますが、通常、選択は必要な文字列であるため、そのステップをスキップできれば便利です。[編集終了]

Perlに相当するものはありますか? 私は、番号付きメニューを提供するTerm::Promptを見 てきました...私が見つけた最も近いものです。これは ido-completion ほどきれいではなく、数値結果を逆方向に文字列に変換する必要があります (大きな問題ではありませんが、煩わしいだけです)。

これを作成しているときに、「メニュー」という用語を使用していることに気付き、さらに検索してTerm::Menus にたどり着きました。これはまだ試していません。

4

1 に答える 1

2

Term :: ReadLineは、あなたが探していることを実行する可能性がありますが、おそらく「ido-completing-read」よりも「completing-read」に似ています。

于 2009-01-05T16:48:31.060 に答える