如何在路由器的 busybox shell 中左右移动光标

如何在路由器的 busybox shell 中左右移动光标

我的路由器运行 asuswrt merlin。 /bin/sh 打包在 BusyBox v1.25.1 (2017-12-02 00:49:46 EST) 多调用二进制文件中。

我的问题是如何将光标左右移动一个单词?

使用 bash,我可以执行option+left, option+right,它在终端中分别映射到\033b\033f

在我的路由器外壳上,它只打印 ab和 an f。那么我如何在 shell 中重新映射快捷方式或者有什么现成的快捷方式?

注1:我发现busybox据说封装了ashshell,所以我的问题可能是如何用ashshell将光标移动一个单词。

注2:我尝试启用和禁用以下选项来使用meta+b和meta+f,但没有成功

使用选项作为元键

注3:添加了apple和ash标签

答案1

Meta-FMeta-B将分别逐字向前和向后移动光标。

如果您所在的终端或连接链无法正确传递密钥(Meta如您的情况所示),则Esc表明下一个字符发送的信号意味着由 更改的击键Meta。因此:按下并释放Esc,然后按下FB分别在远程终端中逐字前进或后退。

也就是说,当我正在处理的命令行足够复杂以正确设置我需要比Ctrl-ACtrl-更复杂的东西时,我通常会在我的配置E中打开它- , - 。EDITORCtrlXCtrlE

答案2

正如JdeBP所说,BusyBox不使用readline。它的键映射在其文件中硬编码read_key.c并由 解释,这lineedit.c意味着~/.inputrc/etc/inputrc和无效。termcapterminfov1.25将 word-left 硬编码为ESC[1;5Dor ESC[1;3D,将 word-right 硬编码为ESC[1;5Cor ESC[1;3C,对应于映射Ctrl-arrow/ Alt-arrow 的模糊 xterm 变体。v1.26为后向词/前向词添加ESC-b/ESC-f,通常映射到Alt- b/ Alt- f

相关内容