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

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

一部の Unix システムでは、Ctrl-A または Ctrl-E を入力すると行の先頭または末尾に移動できます。一部の Unix システムではそれができず、^A または ^E などと表示されるだけです。このキー操作が期待どおりに機能するか (コマンド ライン内を移動する)、^A、^E などの文字が表示されるかを制御するものは何ですか。

答え1

それはすべて特定のシェルの実装に依存します (システムによって、または単一システム内のユーザーによって、bash、ksh、tcsh などの異なるデフォルト シェルが存在する場合があります)。

また、シェル自体にも依存します。

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

詳細については、特定のシェルのドキュメントを参照してください。

答え2

要約

set -o emacs

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


シェルには行編集機能がない、または編集モードvi標準)。

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

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

これは では壊れていました (非常に厄介なことに!)が、他の派生シェルmkshでも同様です。pdksh

他のシェルでは、bashまたはがtcshデフォルトでemacs編集モードになりますが、行編集ライブラリの構成ファイルから上書きすることもできます。

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

set editing-mode vi
set editing-mode emacs

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

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

[1] 混同しないようにlibeditlinereadline は emacs 編集モードのみを提供する「類似機能」です。

関連情報