「set edit-mode vi」と「set -o vi」の違いは何ですか?

「set edit-mode vi」と「set -o vi」の違いは何ですか?

いくつかのフォーラムでset -o vi私の.bashrcファイルでこれが起こりました。今日私set editing-mode viに追加するオプションを見ました.inputrc

グーグルしてみると、どちらも同じように見えますが、2つの間に重要な違いがありますか?

答え1

.inputrc(および/etc/inputrc)はGNUライブラリの設定ファイルですreadline。 bashで開発された2つは現在Chet Rameyによって管理されていますが、tcsh、ksh93、zsh、yashなどの他のアプリケーションには独自の行エディタがあることがよくありますreadlinegdbpython3bcrc

bashまた、コマンドを介して独自の行エディタのreadline設定を変更することもできますbind。したがって、次のようにすることもできます。

bind 'set editing-mode vi'

set -o vi-styleキーバインディングを使用するように行エディタを設定するKornシェルの方法ですvi。 POSIX 仕様はshKorn シェルに基づいているため、shKorn シェルでキーバインディングを構成する POSIX 方式でもあります。

また、bashPOSIX互換シェルを意図したため、ラインエディタモードをスタイル(または開始から始まる)に変更するviオプションセットset -o(とは逆)もありますが、これは最終的に同じことを行います。shoptvibashbash -o vi

また、bashcshとtcshから多くの機能を派生しています。では、tcshを使用してキーバインディングのスタイルを切り替えることができますvi。これもサポートされますが、サポートされません。emacsbindkey -vbindkey -ezshbash

答え2

これらの設定は、を含むがこれらに限定されず、.inputrc使用されるすべてのアプリケーションに適用されます。libreadlinebash

set -o viにのみ.bashrc影響しますbash

関連情報