プログラミングの観点から、bash シェルで vi または emacs を使用するように設定すると、
set -o vi
また
set -o emacs
ここで実際に何が起こっているのですか?私は、bash シェルがシェル自体への入力にこれらのエディターのいずれかを使用すると主張する本を読んでいますが、readline を使用した可能性があると思いました。
プログラミングの観点から、bash シェルで vi または emacs を使用するように設定すると、
set -o vi
また
set -o emacs
ここで実際に何が起こっているのですか?私は、bash シェルがシェル自体への入力にこれらのエディターのいずれかを使用すると主張する本を読んでいますが、readline を使用した可能性があると思いました。
Bashはまだreadlineを使用しています。Readlineはemacsまたはviモードのいずれかを使用し、モードを設定するとさまざまなエディターモードが切り替わります。ベースソースコードのlib/readlineフォルダーをチェックして、さまざまなキーバインディングを確認できます。
マニュアルページBASH_BUILTINS(1)(Fedora 8)によると:
set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
...(すべての1文字のオプションをスキップ)
-oオプション名 option-nameは、次のいずれかになります。
..。
emacsemacsスタイルのコマンドライン編集インターフェイスを使用します。これは シェルがインタラクティブである場合、デフォルトで有効になります。 シェルは--noeditingオプションで開始されます。..。
viviスタイルのコマンドライン編集インターフェイスを使用します。これは、bashが行編集用のコマンドを直接解釈していることを意味すると解釈します。このオプションは、使用するコマンドセットを設定するだけです。readline(3)のマニュアルページを参照してください。
これらのエディタのいずれかを使用しているユーザーが慣れているキーストロークを使用して、コマンド ラインを編集します。
Readline は、その機能を Bash やその他のプログラムに提供する機能です。
からman bash
:
読み込まれた行 これは、interac を使用する際の入力の読み取りを処理するライブラリーです。 --noediting オプションがシェルの呼び出し時に指定されていない限り、アクティブなシェル。 read ビルトインに -e オプションを使用すると、行編集も使用されます。 デフォルトでは、行編集コマンドは emacs のコマンドに似ています。あ vi スタイルの行編集インターフェイスも利用できます。行編集が可能 セットに -o emacs または -o vi オプションを使用していつでも有効にできます 組み込み (以下のシェル組み込みコマンドを参照)。行編集をオフにするには シェルの実行後、+o emacs または +o vi オプションを使用して、 組み込みを設定します。
私が知っていることからreadline
、bash の行編集機能を提供するものです。
1 つの但し書き: vi コマンド モードで押すと、コマンド ラインを編集するv
ための本格的なエディタが表示されます。vi
からman bash
:
READLINEこれは、シェル呼び出し時にオプションが指定されて
いない限り、対話型シェルを使用するときに入力の読み取りを処理するライブラリです。--noediting
デフォルトでは、行編集コマンドは emacs のコマンドに似ています。vi スタイルの行編集インターフェイスも利用できます。シェルの実行後に行編集をオフにするには、組み込みの+o emacs
または+o vi
オプションを使用します。set
シェルからプロンプトが表示された場合 (非編集モードでない限り) 、既にreadline
. emacs モードまたは vi 挿入モードになります (これが、 を使用ESC
して vi コマンド モードに戻ることができる理由です)。