Почему является ярлыком Ctrl + переход к запуску строки в терминале?

Насколько я знаю Fedora 17 не имеет полной поддержки EFI, в то время как я не могу быть уверен, что имел успех с помощью Этой утилиты для начальной загрузки альтернативных операционных систем на моем Mac. Тот был вне разработки некоторое время, таким образом, этот мог бы быть лучшим выбором

11
18.01.2015, 23:14
3 ответа

У этого вопроса есть две стороны: техническая и историческая.

Технический ответ заключается в том, что bash использует GNU Readline . В readline Control-a привязан к функции begin-of-line , вы можете показать это с помощью:

$ bind -q beginning-of-line
beginning-of-line can be invoked via "\C-a", "\M-OH", "\M-[1~", "\M-[7~", "\M-[H".

где \ Ca означает «Control- a ". bind -p покажет все привязки (будьте осторожны, используя bind , легко сломать клавиатуру, если вы случайно укажете дополнительные параметры или аргументы).

Некоторые из вышеперечисленных привязок добавлены по умолчанию, другие я добавил (через .inputrc ) для различных терминалов, которые я использовал. Начиная с bash-2.0, если терминал termcap содержит возможности kh и kH , тогда Home и End будут установлены на ] начало строки и конец строки . И bash , и readline разработаны Четом Рэми , пользователем Emacs, а также разработчиком ce клона Emacs.


(Обратите внимание, здесь делается попытка суммировать многолетнюю историю, начатую много десятилетий назад, и замалчиваются некоторые детали.)

Итак, почему именно Control-a? Readline по умолчанию использует привязки, подобные Emacs . Control-a в GNU Emacs вызывает move-begin-of-line , что мы теперь считаем "домашней" функцией.

Оригинальный EMACS Столлмана и Стила был вдохновлен редактором E Фреда Райта (ранний редактор WYSIWYG) и TECO (загадочный модальный редактор / язык) - - EMACS был набором макросов для TECO. См. Essential E [PDF] (из SAIL , 1980). Однако E использовал Control-Form для «начала строки», это было на клавиатуре «DataDisc», которая имела клавишу Control и клавишу Form . Клавиатура космического курсанта того времени (кстати, без клавиши Home , хотя у нее была End ) обычно обвиняется для интерфейса клавиатуры Emacs.

Одной из желательных особенностей EMACS было использование режима редактирования строки TECO Control-R «в реальном времени» (TECO предшествует терминалам с ЭЛТ / клавиатурой), вы можете увидеть привязки клавиш на странице 6 в MIT AI Lab 1978 ITS Введение в редактор EMACS [отсканированный PDF-файл], где ┌ используется для обозначения Control. В этом режиме все сочетания клавиш были управляющими последовательностями, в основном мнемоническими: Control-E Конец этой строки , Control-P переход к предыдущей строке , Control-N переход к следующей строке , Control-B назад на один символ и не в последнюю очередь Control-A перейти в начало этой строки , предложение Костаса «первой буквы алфавита» ибо это так же хорошо, как и все остальное.

(Аналогичная привязка клавиш есть в макропакете tvlib , цель которого - заставить EMACS вести себя как редактор TVEDIT, связывая элементы управления A и E с обратным и прямым предложением , но использовали разные последовательности для начала и конца строки.)

Привязки Control-A / Control-E в «режиме ^ R» были реализованы непосредственно в ITS TECO (1983, версия 1208, см. _teco_.tgz на сайте nocrew PDP10 / ITS или на Github ), хотя я не могу более точно определить, когда они впервые появились, а источник TECO не указывает, почему были выбраны любые конкретные привязки. Документ MIT EMACS 1978 года выше подразумевает, что в 1978 году EMACS не использовала собственный Control-A / Control-E TECO, возможно , что scrlin пакет макросов (строка экрана) реализовал эти.

Напомним:

  • bash использует строку чтения
  • привязки клавиш строки чтения соответствуют Emacs / EMACS
  • исходная EMACS была создана с помощью TECO, унаследовав многие функции.
  • Макросы интерактивного режима TECO использовали (в основном) мнемонический управляющий ключ привязки, и «начало строки» в конечном итоге было назначено Control-A

См. также:

19
27.01.2020, 19:57

Потому что Ричарду Столлману нравится Emacs .

Ctrl+a перескакивает к началу строки в Emacs, а libreadline использует те же привязки клавиш, что и Emacs. Бэш использует libreadline.

6
27.01.2020, 19:57

Буква «a» была выбрана потому, что Control+b и Control+s уже были заняты, поэтому они решили, что, поскольку A — первая буква латинского алфавита, они будут использовать ее. Откуда я знаю? Потому что сегодня я получил ответ от одного из разработчиков TECO (, предшественника EMACS )и EMACS.

1
20.03.2020, 01:50

Теги

Похожие вопросы