6

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

set -o vi

また

set -o emacs

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

4

4 に答える 4

6

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

于 2009-11-13T02:23:58.813 に答える
1

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

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

...(すべての1文字のオプションをスキップ)

         -oオプション名
            option-nameは、次のいずれかになります。

..。

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

于 2009-11-13T02:24:41.153 に答える
1

これらのエディタのいずれかを使用しているユーザーが慣れているキーストロークを使用して、コマンド ラインを編集します。

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

からman bash:

読み込まれた行
       これは、interac を使用する際の入力の読み取りを処理するライブラリーです。
       --noediting オプションがシェルの呼び出し時に指定されていない限り、アクティブなシェル。
       read ビルトインに -e オプションを使用すると、行編集も使用されます。
       デフォルトでは、行編集コマンドは emacs のコマンドに似ています。あ
       vi スタイルの行編集インターフェイスも利用できます。行編集が可能
       セットに -o emacs または -o vi オプションを使用していつでも有効にできます
       組み込み (以下のシェル組み込みコマンドを参照)。行編集をオフにするには
       シェルの実行後、+o emacs または +o vi オプションを使用して、
       組み込みを設定します。
于 2009-11-13T02:19:48.230 に答える
1

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

1 つの但し書き: vi コマンド モードで押すと、コマンド ラインを編集するvための本格的なエディタが表示されます。vi

からman bash:

READLINEこれは、シェル呼び出し時にオプションが指定されて
     いない限り、対話型シェルを使用するときに入力の読み取りを処理するライブラリです。--noeditingデフォルトでは、行編集コマンドは emacs のコマンドに似ています。vi スタイルの行編集インターフェイスも利用できます。シェルの実行後に行編集をオフにするには、組み込みの+o emacsまたは+o viオプションを使用します。set

シェルからプロンプトが表示された場合 (非編集モードでない限り) 、既にreadline. emacs モードまたは vi 挿入モードになります (これが、 を使用ESCして vi コマンド モードに戻ることができる理由です)。

于 2009-11-13T02:20:54.053 に答える