あなたの質問のおかげで、私は最終的にいくつかの読書を行い、理解を深めました、乾杯!
したがって、非常に優れた情報源は man readline
です。 .さまざまな inputrc
で指定されているキーバインド ファイルは、BASH readline ライブラリの動作を制御します。 readline マンページによると、シンボリック キー名またはエスケープ シーケンスのいずれかを使用できます。
Key Bindings
The syntax for controlling key bindings in the inputrc file is
simple. All that is required is the name of the command or
the text of a macro and a key sequence to which it should be
bound. The name may be specified in one of two ways: as a sym‐
bolic key name, possibly with Meta- or Control- prefixes, or
as a key sequence. The name and key sequence are separated by
a colon. There can be no whitespace between the name and the
colon.
When using the form keyname:function-name or macro, keyname is
the name of a key spelled out in English. For example:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
man ページには、デフォルトの構成ファイルが ~/.inputrc
であると記載されています バインディングをそこに配置することをお勧めします。
通常の文字キーを使用したい場合 (例:Control -g )、Control-g: forward-word
正常に動作します。矢印キーの方が難しいです。キー name を見つけようとしましたが、失敗しました 矢印キー用。私が試したものはどれもありません (left-arrow
、 left
、 :left
) が機能したため、エスケープ シーケンスに行き詰まっているようです。
残念ながら、正確なエスケープ シーケンスはターミナル エミュレーターによって異なります (そのため、Ubuntu の inputrc に複数の行がありました)。お気に入りの端末で使用しているエスケープ シーケンスを調べるには、read
を実行します。 次に、関心のあるキー シーケンスを入力します。terminator
で 、 xterm
および gnome-terminal
、コントロール -左 与える:
$ read
^[[1;5D
aterm
で :
$ read
^[Od <-- that is a capital O not a zero (0).
少し実験して、 ^[[D
であることがわかりました 左です と ^[[1;5D
コントロールです -左 .最初の ^[
Esc です エスケープ シーケンスを表すためにここで使用されていると思われるキー .
いずれにせよ、Control をバインドするには -左 forward-word
まで すべての人に役立つように、これらの行を ~/inputrc
に追加しました :
"\e[1;5D": backward-word
"\eOd": backward-word
よくわからない理由で、コントロール \e
で表されます すべき Esc .
私の最後の ~/.inputrc
上記のすべての端末で機能するファイルは次のとおりです:
"\e[1;5D": backward-word
"\eOd": backward-word
"\e[1;5C": forward-word
"\eOc": forward-word