一部の 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) を決定します(この優先順位で、、、などのバリアントも処理します) 。VISUAL
EDITOR
vim
elvis
xemacs
これは では壊れていました (非常に厄介なことに!)が、他の派生シェル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] 混同しないようにlibeditline
readline は emacs 編集モードのみを提供する「類似機能」です。