如何编写ksh93来使用bash自动完成?

时间:2009-06-03 01:34:43

标签: bash autocomplete ksh

comment in response to a shell question中,用户tinkertim表示很容易入侵ksh以使用bash自动完成库。我想要比使用AT& T bash ksh93自动完成更好。怎么办呢?

ksh93每年都会发布几次新版本,所以我正在寻找一种不涉及修改源代码的解决方案。 ksh93可以动态链接新的C模块,也可以高度编程(我在每次按键时运行ksh函数),因此不一定需要修改源代码。

注意:我不是在谈论 filename 自动完成,这在ksh中很容易实现。我正在讨论bash所做的所有其他美味的自动完成功能,例如nmh命令的自动完成选项或自动完成Mercurial命令。这样的东西。

5 个答案:

答案 0 :(得分:0)

有Readline包装器,rlwrap。也许你已经为你的系统安装了一个软件包。

它位于您开始的程序的标准输入之上,它是可配置的并且可以编程,它保留了历史记录。

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

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

答案 1 :(得分:0)

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

这不是最有效的自动完成功能,但是我在这里没有对我的.profile做一些时髦的黑客攻击并且可能违反使用规则。

答案 2 :(得分:0)

除了set -o emacs之外,还有set -o vi激活键盘组合ESC- \以完成文件名。 (ESC进入命令模式,\使用自动完成以完成尽可能多的文件名。)set -o vi当然也可以通过命令模式和插入两种模式启用命令行进行vi样式编辑-mode。

我承认这并没有回答你在ksh中模仿bash风格自动完成的原始问题,但至少你知道如果你之前没有意识到在自动完成中使用ksh构建的另一种方式。

我还注意到另一个线程带有一些相关的ksh自动完成信息,包括ESC- =来获取选项列表:link text

答案 3 :(得分:0)

绑定tab键以调用使用complete内置的bash脚本,因此ksh93中的命中选项卡实际上运行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(查找“键绑定”)了解详情

答案 4 :(得分:0)

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