
一部の 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
編集モードにすることができます(次に指定)。基準)。
編集モードでない場合、emacs
Ctrl-A と Ctrl-E は特に意味がありません。 stty / termios設定がオンの場合、特に処理されていないすべての制御キーecho
には等の「キャレット」記号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
多くの BSD プログラムで使用されるeditline
/[1] ライブラリの場合、libedit
設定ファイルは通常次のようになります。~/.editrc
に設定:
bind -v # for vi
bind -e # for emacs
[1]交流しないでくださいlibeditline
readline "work-alike"はEmacs編集モードのみを提供します。