我已经构建了许多特定于工作的辅助函数,这些函数对我团队的其他成员和mdash非常有用。但是我已经在Emacs的Elisp中编写了它们,并且让它们从Notepad ++转换它不会发生。
所以,我正在考虑将函数转换为Perl。没问题。
除了我一直使用ido-completion来限制响应:
(setq client (ido-completing-read "Select a Client: " '("IniTrade" "HedgeCorp" "GlobalTech" "OCP") nil t))
编辑:ido-completed-read类似于completing-read,除了所有选项都可见,并且可以通过循环[箭头键,通常]或键入完成来选择。在上面的示例中,提示符看起来像
Select a Client: {IniTrade | HedgeCorp | GlobalTech | OCP}
可以通过点击RET或部分输入在最左边的项目上进行选择(在这种情况下,第一个字母都是唯一的,所以这就是所有需要的,匹配的项目将成为左边的 - 最)。
示例中的nil是未使用的参数,但“t”需要完全匹配 - 例如,用户必须进行其中一个选择。该函数返回一个字符串,例如“IniTrade”。
我的“帮助程序功能”用于内部需求 - 打开特定的错误日志,将批处理还原到服务器等。对于这些操作,用户需要指定测试或生产环境,客户端,阶段等。几乎所有情况下,这些都是用于构建另一个shell命令的字符串选择。如果返回一个数字项,那么可以将其重新转换为字符串 - 但由于选择通常是必需的字符串,如果可以跳过该步骤将会很好。 [编辑结束]
是否有Perl等价物?我看了Term::Prompt提供了一个编号菜单...我发现最近的。这不像偶像完成那么漂亮,我仍然需要将数字结果向后转换为字符串(不是主要问题;只是讨厌)。
在撰写本文时,我注意到我使用了“菜单”一词,所以进行了一些搜索并提出了Term::Menus.我还没有尝试过这个。
答案 0 :(得分:2)
Term :: ReadLine可以做你想要的,虽然它可能更像'完成 - 阅读'而不是'ido-completed-read'。