/ / viまたはemacsのbash使用法 - bash、libreadline

viまたはemacsのbash使用法 - bash、libreadline

プログラミングの観点から、viまたはemacsを使用するようにbashシェルを設定すると

set -o vi

または

set -o emacs

実際にここでは何が起こっていますか?私は、bashシェルがシェル自体への入力にこれらのエディタのいずれかを使用していると主張している本を読んでいましたが、readlineを使用している可能性があると思いました。

回答:

回答№1は5

Bashはまだreadlineを使っています。 Readlineはemacsまたはviモードを使い、さまざまなエディタモード間でモードを切り替えるように設定します。ベースソースコードのlib / readlineフォルダをチェックして、さまざまなキーバインディングを確認することができます。


回答№2の場合は1

マニュアルページBASH_BUILTINS(1)(Fedora 8上)によると:

   set [--abefhkmnptuvxBCHP] [-o option] [arg ...]

...(すべての単一文字オプションをスキップします)

-oオプション名 option-nameには、次のいずれかを指定できます。

...

            emacs emacs形式のコマンドライン編集インタフェースを使用します。これは シェルが対話型である場合、デフォルトで有効になります。 シェルは--noeditingオプションで起動します。
...
vi viスタイルのコマンドライン編集インターフェースを使用します。
これは、bashが行編集用のコマンドを直接解釈していることを意味すると解釈します。このオプションは、使用するコマンドセットを設定するだけです。 readline(3)のマニュアルページを参照してください。


回答№3の場合は1

コマンドラインを編集するために、それらのエディタの1人のユーザが使い慣れたキーストロークを使用します。

Readlineは、その機能をBashや他のプログラムに提供する機能です。

から man bash

読み込まれた行 これは読書を扱う図書館ですインタラクティブ機能を使用する場合は、 シェルの呼び出し時に--noeditingオプションが指定されていない限り、 行の編集は、組み込み読み込みに対して-eオプションを使用する場合にも使用されます。 デフォルトでは、行編集コマンドはemacsのコマンドと似ています。 A viスタイルのライン編集インターフェースも利用できます。行の編集は可能です -o emacsまたは-o viオプションを使用していつでも有効にできます (後述のシェルビルドコマンドを参照)。ライン編集をオフにするには シェルが実行された後、+ o emacsまたは+ o viオプションを 組み込み。

回答№4の場合は1

私が知っていることから、 readline bashのライン編集機能を提供するものです。

1つの条件: v viコマンドモードでは、 vi エディタを使用してコマンドラインを編集します。

から man bash

読み込まれた行
これは、インタラクティブシェルを使用しているときに読み込みを処理するライブラリです。 --noediting オプションはシェル呼び出しで与えられます。 デフォルトでは、行編集コマンドはemacsのコマンドと似ています。 vi形式のライン編集インターフェースも利用できます。シェルの実行後に行編集をオフにするには、 +o emacs または +o vi オプション set ビルトイン。

シェルがあなたにプロンプ​​トを表示すると(非編集モードでない限り)、あなたは 既に を使用して readline。あなたはemacsモードかvi挿入モードのどちらかになります ESC viコマンドモードに戻るには)。