シェルが「vi」モードまたは「emacs」モードにあるとはどういう意味ですか?

シェルが「vi」モードまたは「emacs」モードにあるとはどういう意味ですか?

この質問は回答。この場合、特に次の部分は理解できません。

Ctrl-Wこの点で、その動作はbash(readline)/ ksh / zsh emacsモードよりもemacsに近いが、前の単語(werase、viでも))を持つターミナルドライバの組み込みラインエディタ(通常モード)から外れます。

ここでは、完全に異なる2つのプログラム、エディタではなくシェルについて話しています。シェルがいくつかのエディタモードにあるとはどういう意味ですか?

PS:私がシェルとは何か、そして基本的な編集にvimを使う方法を理解しているという前提で答えることができます。

ベストアンサー1

「vi」モードでは、viエディタの行と同様に、現在のシェルプロンプトで編集/検索できます。一行のテキストファイルと考えてください。同様に、「emacs」モードでは、(特定の)Emacsショートカットを使用して現在のコマンドラインを編集/検索できます。

はい

たとえば、viモードでは、bashで次のことを行うことができます。

$ set -o vi
$ ls hello world
<ESC>
bbdw # results in
$ ls world

Emacsモードでは、Ctrl+およびその他のキーを押してA行の先頭に移動できます(vi:Ctrl+ [0またはESC0)。set -o emacsEmacsモード(bash、ksh、zshなど)をオンにすることができます。

読書船

多くの対話型コマンドラインプログラム(例:強く打つ) 使用読書船図書館。したがって、1つの場所でviまたはemacsを使用するように入力モードやその他のオプションを設定できるため、readlineを使用するすべてのプログラムはまったく同じ編集/検索インターフェイスを持つことになります。

たとえば、私のreadline設定は次のようになります。

$ cat ~/.inputrc 
set editing-mode vi
set blink-matching-paren on

例えば扱いにくい/変化の多く私が知っている限り、readlineは使用されていませんが、vi / emacsモードもサポートされています。これはbash / readlineモードと非常によく似ています。

もちろん、コマンドラインシェルのvi / emacsモードは、完全なエディタ機能セットのサブセットにすぎません。すべての機能がコマンドラインシェルに適しているわけではなく、一部の機能のサポートは他の機能よりも複雑です。

正式モード

インタラクティブなコマンドラインシェルのvi / emacsモードが「発明」される前に、シェルは次のものを使用しました。正式モード端末は、限定された編集コマンドセットのみを提供します(例:Ctrl+W最後の単語の削除)。

おすすめ記事