我已经构建了许多特定于工作的辅助函数,这些函数对我团队的其他成员和mdash非常有用。但是我已经在Emacs的Elisp中编写了它们,并且让它们从Notepad ++转换它不会发生。

所以,我正在考虑将函数转换为Perl。没问题。

除了我一直使用ido-completion来限制响应:

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

编辑:ido-completed-read类似于完成-read ,除了所有选项都可见,并且可以通过循环[箭头键,通常]或键入完成来选择。在上面的示例中,提示符看起来像

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

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

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

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

是否有Perl等价物?我查看了 Term :: Prompt 提供了一个编号菜单......我发现最近的。这不像偶像完成那么漂亮,我仍然需要将数字结果向后转换为字符串(不是主要问题;只是讨厌)。

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

有帮助吗?

解决方案

Term :: ReadLine可以做你想要的,虽然它可能更像'完成 - 阅读'而不是'ido-completed-read'。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top