ショートカットCtrl + Aがターミナルの行の先頭に移動するのはなぜですか?

ショートカットCtrl + Aがターミナルの行の先頭に移動するのはなぜですか?

行の終わりにジャンプすることが最後と見なすことができるCtrl+と同様に、なぜ最初にジャンプを使用するのですか?EEA

ベストアンサー1

この質問には、技術的側面と歴史的側面の2つの側面があります。

技術的な答えは以下をbash使用するためです。GNUリードラインreadlineControl-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機能が含まれている場合とはとkhkH設定されHomeます。そして両方で構成されていますEndbeginning-of-lineend-of-linebashreadlineチェットレイミ、Emacsユーザーであり、ceEmacsクローン開発者です。


(この記事は数十年前の歴史を要約し、いくつかの詳細を煮詰めるためのものです。)

さて、なぜ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に割り当てられます。

また見なさい:

おすすめ記事