readline bash vi(viシェルモード)でファンクションキーを再マップする方法は?

readline bash vi(viシェルモード)でファンクションキーを再マップする方法は?

vi readlineのマッピングファンクションキーに関して、次の2つのスタック交換を読みました。


タッチバー付きのMacBookProを使用しています。ファンクションキーは常にオンになっていますが、物理キーとは異なり、仮想タッチバーファンクションキーは不安定で、私が入力するコマンドにゴミを注入することが多い(特に下線を入力しようとすると問題になる…それらのうちF9F10多分一部F11) 。私はこのキーを使用しません...だからそれを無効にすることができたらと思います。しかし、単に行末に移動することができるとしましょう。

以下は、(挿入モードで)行末にマッピングしようとするいくつかの試みの1つです。

set editing-mode vi
$if mode=vi
    set keymap vi-insert
    "<F9>": end-of-line
$endif

プロンプトに「asdf」と入力した結果は次のとおりです。

TT->~$ [] (arg: 20)

その上に「[]」と入力すると、カーソルを<F9>押した後もカーソルはそのまま残ります。

私が試したバリエーションは次のとおりです。

  • "<F9>": end-of-line
  • <F9>": end-of-line
  • 20: end-of-line
  • "20": end-of-line
  • "arg: 20": end-of-line
  • (arg: 20): end-of-line
  • "(arg: 20)": end-of-line

修正する:次は.inputrc現在「無視」されています。

set keymap vi-insert
"\e[20~":redraw-current-line

答え1

クレイジーだが本当です…私は今日新しいサーバーにいて、この質問を完全に忘れて(答えはコメントに隠されています)、実際に今日これを行う方法を探していました。 viコマンドラインでファンクションキーの入力を無効にするのに問題がある自分自身や他の人に答えを投稿します。

  1. ~/.inputrcファイルの作成または編集
  2. Via(MacOS、Ubuntu、CentOS少なくとも) 以下を使用します。
set keymap vi-insert
"\e[19~":redraw-current-line
"\e[20~":redraw-current-line
"\e[21~":redraw-current-line
"\e[22~":redraw-current-line
"\e[23~":redraw-current-line

@mosvyが指摘したように、現在の行を再描画すると、迷惑な " (arg: 20)"または " (arg: 21)"がコマンドライン入力が破損するのを防ぎます。

関連情報