Насколько я знаю Fedora 17 не имеет полной поддержки EFI, в то время как я не могу быть уверен, что имел успех с помощью Этой утилиты для начальной загрузки альтернативных операционных систем на моем Mac. Тот был вне разработки некоторое время, таким образом, этот мог бы быть лучшим выбором
У этого вопроса есть две стороны: техническая и историческая.
Технический ответ заключается в том, что 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
пакет макросов (строка экрана) реализовал эти.
Напомним:
См. также:
Потому что Ричарду Столлману нравится Emacs .
Ctrl+a перескакивает к началу строки в Emacs, а libreadline использует те же привязки клавиш, что и Emacs. Бэш использует libreadline.
Буква «a» была выбрана потому, что Control+b и Control+s уже были заняты, поэтому они решили, что, поскольку A — первая буква латинского алфавита, они будут использовать ее. Откуда я знаю? Потому что сегодня я получил ответ от одного из разработчиков TECO (, предшественника EMACS )и EMACS.