如何在 Ksh 中将 clear 绑定到 ^L

How to bind clear to ^L in Ksh

如何在 KornShell 中复制以下 bash 功能:

bind "\C-l":"clear-screen"

我需要 bind 因为我在 bash 中使用 set -o vi,并且
也计划在 ksh 中使用它。

尝试在 ksh 中使用它会打印出错误:

ksh: bind: not found

很抱歉告诉你这个消息,但正如您所注意到的,ksh 和 bash 之间存在差异:不存在绑定或定义键映射的能力。可编程命令完成也不是。从历史上看,Korn shell 专注于语言设计和功能,而不是交互式终端功能。

GNU bash 通过由同一个人 Chet Ramey 开发和维护的 GNU Readline 库提供键绑定。 ksh 据我所知,即使在最新版本中也没有使用这个库,也没有提供等效的库。

解决方法是查看您是否可以对终端进行编程以提供此类功能。在 tmux 中,如果你把这个放在你的 .tmux.conf 配置文件中:

bind-key C-l send-keys clear

然后 tmux 将在 ksh 有机会看到它之前解释 Control-l 并使用字符串 "clear" 进行扩展。 (下面我打赌 tmux 使用的是 GNU Readline 库)

POSIX 标准(ksh 和 bash 都遵循)定义了一个 "alias" 命令。不过别名isn't defined to allow control characters。一个特定的实现可能会这样做,但 ksh 不会。

另见 https://unix.stackexchange.com/questions/82223/how-to-setup-keyboard-shortcut-that-enters-predefined-text-into-x11-xterminal-vi