Як і стрибок до кінця рядка - це Ctrl+ E, де Eможна вважати кінець, чому він переходить до початку використання A?
emacs
(і в bash
тому числі) ви можете перейти до початку / кінця рядка також за допомогою Home
/ End
клавіш за замовчуванням.
Як і стрибок до кінця рядка - це Ctrl+ E, де Eможна вважати кінець, чому він переходить до початку використання A?
emacs
(і в bash
тому числі) ви можете перейти до початку / кінця рядка також за допомогою Home
/ End
клавіш за замовчуванням.
Відповіді:
У питання є дві сторони, технічна та історична сторони.
Технічна відповідь полягає в тому, що bash
використовується GNU Readline . У 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, якщо термінальний термінcap містить можливості kh
, kH
тоді Homeі Endбуде встановлено значення beginning-of-line
і end-of-line
. І те, bash
і readline
їх розробляє Chet Ramey , користувач Emacs, а також розробник ce
клону Emacs.
(Зверніть увагу, це намагається узагальнити багаторічну історію за багато десятиліть тому назад, а також висвітлити деякі деталі.)
Тепер, чому саме Control-a зокрема? Readline використовує за замовчуванням Emacs-подібні прив’язки . Control-a в GNU Emacs посилається на move-beginning-of-line
те, що ми зараз вважаємо "домашньою" функцією.
Оригінальний EMACS від Stallman and Steel був натхненний редактором електронної редакції Fred Fred Wright (ранній редактор WYSIWYG) та TECO (крипто-модальний редактор / мова) - EMACS був набором макросів для TECO. Див. Essential E [PDF] (від SAIL , 1980). Однак, використовуючи форму управління для "початку рядка", це було на клавіатурі "DataDisc", яка мала Controlклавішу та Formклавішу. Простір-курсант клавіатура часу (відсутній Homeключ, до речі, хоча він мав End) зазвичай звинувачує для інтерфейсу клавіатури Emacs.
Однією з бажаних особливостей EMACS було використання режиму редагування ліній в режимі реального часу TECO Control-R (TECO перед терміналами CRT / клавіатури). Ви можете бачити ключові прив’язки на сторінці 6 лабораторії MIT AI 1978 ITS Вступ до редактор EMACS [сканований PDF], де ┌ використовується для позначення Control. У цьому режимі ключовими прив'язками були всі керуючі послідовності, значною мірою мемонічні: Control-E Кінець цього рядка , Control-P перехід до попереднього рядка , Control-N перехід до наступного рядка , Control-B назад один символ , і не в останню чергу управління -Перехід до початку цього рядка , пропозиція Костаса про "першу літеру алфавіту" для цього так само добре, як і будь-яка.
(Аналогічна прив'язка ключів є в tvlib
макропакеті, який мав на меті змусити EMACS вести себе як редактор TVEDIT, прив'язуючи керування A і E до зворотнього і прямого речення , але використовував різні послідовності для початку та кінця рядка.)
Прив'язки Control-A / Control-E в режимі "^ R" були реалізовані безпосередньо в ITS TECO (1983 р., Версія 1208, див. _teco_.tgz
Архів на веб- сайті PDP10 / ITS nocrew або на Github ), хоча я не можу визначити більш точно коли вони вперше з'явилися, і джерело TECO не вказує, чому були обрані певні прив'язки. З вищенаведеного документа MIT EMACS 1978 р. Випливає, що в 1978 р. EMACS не використовував натиснуту контрольну систему AEC / Control-E TECO, можливо , scrlin
макро пакет (лінія екрана) реалізував їх.
Для резюме:
Дивитися також:
Тому що Річарду Сталману подобається Emacs .
Ctrl+ aпереходить на початок рядка в Emacs, а libreadline використовує ті самі прив'язки клавіш, що і Emacs. Bash використовує вільну лінію.
set -o vi
або echo 'set editing-mode vi' >> ~/.inputrc
отримати клавіші Vim!
Буква "а" була обрана тому, що Control + b та Control + s вже були прийняті, тож вони вирішили, що оскільки A - перша літера латинського алфавіту, це буде те, що вони використовували. Звідки я знаю? Тому що я сьогодні отримав відповідь від одного з розробників TECO (попередник EMACS) та EMACS.