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 类似于 complete- read,除了所有选项都是可见的,并且可以通过循环 [箭头键,通常] 或键入完成来选择。在上面的例子中,提示看起来像

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

可以通过点击 RET 或部分输入在最左边的项目上进行选择(在这种情况下,第一个字母都是唯一的,所以这就是所有需要的,匹配的项目将成为最左边的)。

示例中的 nil 是未使用的参数,但“t”需要完全匹配——例如,用户必须做出选择之一。该函数返回一个字符串,例如“IniTrade”。

我的“辅助功能”是针对内部需求的——打开特定的错误日志,将批处理恢复到服务器等。对于这些操作,用户需要指定测试或生产环境、客户端、阶段等。几乎在所有情况下,这些是用于构建另一个 shell 命令的字符串选择。如果返回数字项,则可以将其重新转换为字符串——但由于选择通常是所需的字符串,如果可以跳过该步骤会很好。[结束编辑]

有 Perl 等价物吗?我查看了Term::Prompt ,它提供了一个编号菜单......我找到的最接近的。这不如 ido-completion 漂亮,而且我仍然必须将数字结果向后转换为字符串(不是主要问题;只是烦人)。

在撰写本文时,我注意到我使用了“菜单”一词,因此进行了更多搜索并提出了Term::Menus。这个我还没试过。

4

1 回答 1

2

Term::ReadLine 可能会做您正在寻找的事情,尽管它可能更像是“完成阅读”而不是“ido-完成阅读”。

于 2009-01-05T16:48:31.060 回答