3

回复 shell question 的评论中,用户tinkertimksh使用bash自动补全库很容易破解。我最想要的就是使用bashAT&T 的自动完成功能ksh93。如何才能做到这一点?

ksh93一年有几次新版本,所以我正在寻找不涉及修改源代码的解决方案。 ksh93可以动态链接新的 C 模块并且是高度可编程的(我在每次击键时运行一个 ksh 函数),所以修改源代码应该是没有必要的。

注意:我不是在谈论文件名自动完成,这在ksh. 我说的是 bash 所做的所有其他美味的自动完成功能,例如nmh命令的自动完成选项或 Mercurial 命令的自动完成。像这样的东西。

4

5 回答 5

0

有 Readline 包装器 rlwrap。也许您已经为您的系统准备了一个软件包。

它位于您启动的程序的标准输入之上,它是可配置的并且有点可编程,它保留了历史。

我通常将它用于 Oracle SQL*Plus 之类的东西。

它可能是也可能不是您正在搜索的工具,您必须检查。

于 2009-06-03T05:25:37.337 回答
0

除此之外,set -o emacs它还set -o vi可以激活键盘组合 ESC-\ 以完成文件名。(ESC 进入命令模式,\ 使用自动完成功能来完成尽可能多的文件名。) set -o vi当然,它还可以使用命令模式和插入模式这两种模式让您的命令行进行 vi 风格的编辑。

我承认这并不能回答您最初在 ksh 中模拟 bash 式自动完成的问题,但至少您知道如果您之前不知道另一种方法可以让 ksh 构建自动完成。

我还注意到这里有另一个线程,其中包含一些相关的 ksh 自动完成信息,包括 ESC-= 以获取选择列表:link text

于 2010-06-10T18:13:11.997 回答
0

我认为我发现的最简单的方法之一(在我无法访问更改包等的客户端服务器上)是将行编辑器设置为 emacs,set -o emacs然后双击 ESC(ESC-ESC)。

这不是最有效的自动完成功能,但它就是我在这里所拥有的,而无需对我的 .profile 进行一些时髦的黑客攻击,并且可能违反使用规则。

于 2010-01-13T20:35:12.217 回答
0

绑定 tab 键以调用使用complete内置的 bash 脚本,因此在 ksh93 中点击 tab 实际上会运行 bash 来完成文本。

请参阅 http://www.gnu.org/software/bash/manual/html_node/Programmable-Completion-Builtins.html#Programmable-Completion-Builtinshttp://www2.research.att.com/sw/download/man /man1/ksh.html(查找“键绑定”)了解详细信息

于 2013-05-29T16:07:42.950 回答
-1

尝试按 ESC 然后按 '\' 键。它应该模仿 bash 的自动完成功能。

于 2017-02-17T15:32:08.473 回答