Как прыжок в конец строки - это Ctrl+ E, где Eего можно рассматривать как конец, почему он прыгает в начало, используя A?
bash
keyboard-shortcuts
xi.lin
источник
источник
emacs
(и вbash
тоже время) вы можете перейти к началу / концу строки также с помощью клавишHome
/End
по умолчанию.Ответы:
В этом вопросе есть две стороны: техническая и историческая.
Технический ответ: потому что
bash
использует GNU Readline . Вreadline
Control-a привязан к функцииbeginning-of-line
, вы можете показать это с помощью:где
\C-a
означает «контроль-а».bind -p
покажет все привязки (будьте осторожны при использованииbind
, легко сломать клавиатуру, если вы случайно предоставите дополнительные опции или аргументы).Некоторые из вышеуказанных привязок добавляются по умолчанию, другие я добавил (через
.inputrc
) для различных терминалов, которые я использовал. Начиная с bash-2.0, если терминал termcap содержит возможностиkh
, аkH
затем Homeи Endбудет установленоbeginning-of-line
иend-of-line
. Обаbash
иreadline
разработаны Chet Ramey , пользователем Emacs, а также разработчикомce
клона Emacs.(Обращаем ваше внимание, что здесь делается попытка обобщить историю многих лет за многие десятилетия назад, а также некоторые детали.)
Теперь, почему это Control-а в частности? Readline по умолчанию использует Emacs-подобные привязки . Control-a в GNU Emacs вызывает то
move-beginning-of-line
, что мы сейчас считаем «домашней» функцией.Столлман и оригинальный EMACS Стил были вдохновлен Фредом Райта E редактором (ранний редактор WYSIWYG) и ТЕКО (зашифрованный модальный редактор / языка) - EMACS был набор макросов для TECO. См. Essential E [PDF] (из SAIL , 1980). E, однако, использовал Control-Form для «начала строки», это было на клавиатуре «DataDisc», в которой были Controlклавиша и Formклавиша. Пространство-курсант клавиатура времени (отсутствует Homeключ, кстати, хотя он имел End) обычно обвиняет для интерфейса клавиатуры Emacs.
Одной из желательных особенностей EMACS было использование режима редактирования строки в реальном времени TECO Control-R (TECO предшествует терминалам CRT / клавиатуры), вы можете увидеть привязки клавиш на странице 6 MIT AI Lab 1978 ITS Введение в редактор EMACS [отсканированный PDF], где ┌ используется для обозначения элемента управления. В этом режиме все сочетания клавиш представляли собой последовательности управления, в основном мнемонические: Control-E Конец этой строки , Control-P - переход на предыдущую строку , Control-N - переход на следующую строку , Control-B - назад на один символ и, что не менее важно, Control -Переход к началу этой строки , предложение Костаса о «первой букве алфавита» для этого так же хорошо, как и любой.
(Аналогичный ключ привязки находится в
tvlib
макропакете , которая направлена , чтобы EMACS вести себя как редактор TVEDIT, связывание управления А и Е в обратное и прямое предложение , но используются разные последовательности для начала и конца строки.)Привязки Control-A / Control-E в режиме «^ R» были реализованы непосредственно в ITS TECO (1983, версия 1208, см.
_teco_.tgz
Архив на сайте PDP10 / ITS nocrew или на Github ), хотя я не могу определить более точно когда они впервые появились, и источник TECO не указывает, почему были выбраны какие-либо конкретные привязки. Приведенный выше документ EMACS MIT 1978 года подразумевает, что в 1978 году EMACS не использовал родной TECO Control-A / Control-E, возможно, чтоscrlin
макропакет (строка экрана) реализовал их.Подведем итог:
Смотрите также:
источник
Потому что Ричард Столлман любит Emacs .
Ctrl+ aпереходит на начало строки в Emacs, а libreadline использует те же привязки клавиш, что и Emacs. Bash использует libreadline.
источник
set -o vi
илиecho 'set editing-mode vi' >> ~/.inputrc
получить комбинацию клавиш Vim!Буква «а» была выбрана, потому что Control + b и Control + s уже были взяты, поэтому они решили, что, поскольку A была первой буквой латинского алфавита, это будет то, что они использовали. Откуда я знаю? Потому что сегодня я получил ответ от одного из разработчиков TECO (предшественник EMACS) и EMACS.
источник