彼のLinux実用ガイド、4e、Sobelは次のような部分を提供します。
$ cat ~/.inputrc
set editing-mode vi
$if mode=vi
"\C-y": vi-next-word
$else
"\C-y": forward-word
$endif
このコードスニペットは、bashがviモードでもemacsモードにかかわらず、CONTROL-Yにカーソルを次の単語の先頭に移動させるように見えます。
私が混乱しているのは、このコードスニペットを使用してEmacsモードに入る方法です。私の現在の理解は次のとおりです。
Readlineライブラリでいくつかの要素/ショートカット/トークン(用語がわかりません)を使用すると、bashはinput.rcを検索して何を意味するのかを確認します。
1)がtrueの場合(おそらくそうではなく、input.rcは新しいシェルを初期化するためにのみ使用されますが、この場合、
$else
上記のセクションが決して到着しないため、なぜ関連があるのか理解できませんか?set -o emacs
)コマンドラインの指定された項目で前方スキップを使用すると、CONTROL-Y
input.rcを読み取らずに何かに切り替えることができますかediting-mode = vi
?
答え1
ほぼ当たったと思います。
set editing-mode
どの Readline モードが使用されるかを決定します。基本的に。ただし、bash
いつでもモードを切り替えることができます。 Readlineを使用する他のアプリケーションもそうすることができます。
キーを押すたびに実際のファイルを読むことは.inputrc
非効率的であるため、実際に何が起こるのかはおそらく次のようになります。
プログラムがReadlineライブラリを初期化すると、ライブラリはこのファイルを.inputrc
読み取り、必要な設定を準備します。2つのモード。set editing-mode
どのモードがユーザーに最初に表示されるかはすぐに決定されますが、ユーザーが後でモードを切り替えたい場合は、両方のモードが設定されます。
条件がない場合、可能な場合はキーバインディングが両方のモードに適用されます。$if mode=
条件付き構文を使用すると、キーバインディングを特定のモードにのみ適用できます。
他の条件付き構成もあります。$if term=
現在の端末が特定の種類の場合にのみキーバインディングを設定でき$if application=
ます.inputrc
。