
行の終わりにジャンプすることが最後と見なすことができるCtrl+と同様に、なぜ最初にジャンプを使用するのですか?EEA
答え1
この質問には、技術的側面と歴史的側面の2つの側面があります。
技術的な答えは以下をbash
使用するためです。GNUリードライン。readline
Control-a 関数バインディングでは、beginning-of-line
次のように表示できます。
$ bind -q beginning-of-line
beginning-of-line can be invoked via "\C-a", "\M-OH", "\M-[1~", "\M-[7~", "\M-[H".
これは\C-a
「Control-a」を意味します。
bind -p
すべてのバインディングが表示されます(注意して使用してくださいbind
。誤って追加のオプションやパラメータを指定すると、キーボードが破損する可能性があります)。
上記のバインディングのいくつかはデフォルトで追加され、他のものは.inputrc
私が使用したさまざまな端末に(経由で)追加したものです。 bash-2.0以降、ターミナルtermcap機能が含まれている場合とはとkh
にkH
設定されHomeます。そして両方で構成されていますEndbeginning-of-line
end-of-line
bash
readline
チェットレイミ、Emacsユーザーであり、ce
Emacsクローン開発者です。
(この記事は数十年前の歴史を要約し、いくつかの詳細を煮詰めるためのものです。)
さて、なぜControl-aを特別に使うのですか?読書船デフォルトではEmacsに似たバインディングを使用します。。 Control-GNU Emacsの呼び出しmove-beginning-of-line
。今、私たちはこれを「ホーム」機能と考えています。
ストールマン&スチールオリジナルEMACSフレッドライトからインスピレーションを受ける第二編集する(初期のWYSIWYGエディタ)とテコ(神秘的なモーダルエディタ/言語) - EMACSホンジテコのために。バラより必須E[PDF](から帆、1980)。ただし、EはControl-Formを使用して「行の開始」を意味し、これはControlキーとキーを持つ「DataDisc」キーボードにありますForm。これ宇宙生徒キーボード時間(Homeところでキーは一つありますが欠けていますEnd)広く非難Emacsのキーボードインターフェースと一緒に使用されます。
EMACSの望ましい機能の1つは、TECOのControl-R「ライブ」ライン編集モードを使用することです(TECOはCRT /キーボード端末よりも先です)。 MIT AI Lab 1978 ITSの6ページでキーバインディングを表示できます。EMACSエディタの紹介[スキャンPDF]、ここで┌は制御を表すために使用されます。このモードでは、キーバインディングは主にニーモニックな制御シーケンスです:Control-E今回の旅行を終えて、コントロール-P前の行に移動、コントロール-N次の行に移動、コントロール-B1文字戻る、特に Control-A行の先頭に移動これに対するコスタスの提案である「アルファベットの最初の文字」が最善です。
(同様のキーバインディングは次の場所にあります。tvlib
マクロパッケージ目的は、EMACSがTVEDITエディタのように動作するようにし、コントロールAとEを後方および前方にバインドすることです。文章しかし、行の始めと終わりに異なるシーケンスを使用します。 )
「^R モード」の Control-A/Control-E バインディングは ITS TECO (1983, バージョン 1208,_teco_.tgz
参照) で直接実装されます。ノックルPDP10/ITSウェブサイトまたはジタブ)、最初に登場したとき、より正確にはわかりませんが、TECOソースは特定のバインディングが選択された理由を伝えません。上記の1978 MIT EMACSファイルは、1978 EMACSがTECOのデフォルトのControl-A / Control-Eを使用していないことを意味します。可能考えるscrlin
マクロパッケージ(スクリーンライン)がこれを達成します。
要約すると:
- readlineを使用してbash
- readline キーバインディングは Emacs/EMACS に従います。
- オリジナルのEMACSはTECOと共同制作され、多くの機能を継承しました。
- TECOのインタラクティブモードマクロは(主に)ニーモニックを使用してキーバインディングを制御し、「行の開始」は最終的にControl-Aに割り当てられます。
また見なさい:
答え2
なぜならリチャード・ストルマン良いEmacs。
Ctrl+ aEmacsで行の先頭に移動します。 libreadlineはEmacsと同じキーバインディングを使用します。 Bashはlibreadlineを使用しています。
答え3
文字「a」を選択した理由は、Ctrl + bとCtrl + sがすでに使用されていたためです。それで、Aはラテンアルファベットの最初の文字なので、それを使うことにしました。私はどのように知っていますか?今日はTECO(EMACSの全身)とEMACS開発者の一人から回答を受けたからです。