私のルータはasuswrt merlinを実行しています。 /bin/sh は BusyBox v1.25.1(2017-12-02 00:49:46 EST) マルチコールバイナリにパッケージされています。
私の質問は、カーソルを1単語ずつ左右に移動できますか?
Bashを使用すると、ターミナルでそれぞれマッピングされているoption+left
ものを実行できます。 option+right
\033b
\033f
私のルーターケースでは、ab
と.のみが印刷されますf
。では、シェルからショートカットを再マップするにはどうすればよいですか?それともすでに作られたショートカットはありますか?
注 1: シェルをbusybox
カプセル化することになっているので、私の質問はシェルでカーソルを 1 ワードずつ移動する方法かもしれません。ash
ash
注2:Meta + bとMeta + Fを使用するために、次のオプションを有効または無効にしようとしましたが、成功しませんでした。
注 3: apple タグと ash タグの追加
答え1
Meta-FとMeta- はBそれぞれカーソルを前後に移動します。
キーが正しく転送されない端末または接続チェーンにある場合(Metaあなたの場合と同様)、これは次のEsc文字が送信した信号が変更されたキーストロークを意味しますMeta。したがって、を押して放した後、またはをEsc押しFてB文字通りリモート端末から前後に移動します。
つまり、私が扱っているコマンドラインが適切に設定できるほど複雑で、 -CtrlまたはA- 、 - よりCtrl複雑なものが必要な場合は、一般的に設定でEこの機能をオンにします。EDITOR
CtrlXCtrlE
答え2
JdeBPが言ったように、BusyBoxはreadlineを使用しません。そのキーマップはファイルにハードコードされているread_key.c
と解釈されます。これは、とが無効であることをlineedit.c
意味します。~/.inputrc
/etc/inputrc
termcap
terminfo
v1.25マッピング -arrow/ -arrow のあいまいな xterm 変形に対応する or で単語の左をESC[1;5D
orESC[1;3D
で単語の右をハードコーディングします。ESC[1;5C
ESC[1;3C
CtrlAltv1.26戻る/進む単語に追加され、通常は- / -ESC-b/ESC-f
にマップされます。AltbAltf