我已经构建了许多特定于工作的帮助函数,这些函数可能对我团队的其他成员有用&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。这个我还没试过。