コマンドラインでカーソルの移動を制御する設定は何ですか?

コマンドラインでカーソルの移動を制御する設定は何ですか?

一部の Unix システムでは、Ctrl-A または Ctrl-E を入力して行の先頭または末尾に移動できます。一部のUnixシステムではできません。 ^A または ^E などのみ印刷します。このキー押しが期待どおりに機能するか(コマンドラインの周りに移動)、^ A、^ Eなどの文字を印刷するかどうかを制御するものは何ですか?

答え1

これはすべて特定のシェル実装によって異なります(他のシステムで、またはbash、ksh、tcshなどのような単一のシステム内の他のユーザーに対して異なるデフォルトシェルを持つこともできます)。

これもシェル自体によって異なります。

たとえば、bashはemacsとviという2つのモードをサポートしています。各モードには独自のショートカット(emacsやviなど)があります。これを変更するには、次の手順を実行する必要がありますset -o emacs(通常はデフォルト)。set -o vi

特定のシェル文書で詳細情報を見つけることができます。

答え2

長すぎます。

set -o emacs

使用するほとんどのシェルで、Ctrl-A、Ctrl-E、Ctrl-Bなどのemacsキーバインディングを有効にします。


シェルには行編集機能がないか、vi編集モードにすることができます(次に指定)。基準)。

編集モードでない場合、emacsCtrl-A と Ctrl-E は特に意味がありません。 stty / termios設定がオンの場合、特に処理されていないすべての制御キーechoには等の「キャレット」記号echoctlが表示されます。^A^X

kshまたは、他の多くのシェルは、環境変数の値zshに基づいてデフォルトの編集モード(viまたはemacs)を決定します(優先順位に従って、、などのバリアントも処理します)。VISUALEDITORvimelvisxemacs

これは(非常に迷惑です!)壊れていますが、mksh他の派生シェルではまだそうです。pdksh

他のシェルは編集モードを好むbashtcshデフォルトに設定しemacsますが、これは行編集ライブラリの構成ファイルで上書きすることもできます。

~のためreadlineプログラムで使用される他の多くのライブラリと同様に、設定ファイルbash~/.inputrcまたは環境変数で指定されたファイル)には、次のように設定されたINPUTRCフォールバックがあります。/etc/inputrc

set editing-mode vi
set editing-mode emacs

多くの BSD プログラムで使用されるeditline/[1] ライブラリの場合、libedit設定ファイルは通常次のようになります。~/.editrcに設定:

bind -v  # for vi
bind -e  # for emacs

[1]交流しないでくださいlibeditlinereadline "work-alike"はEmacs編集モードのみを提供します。

関連情報