Як і стрибок до кінця рядка - це Ctrl+ E, де Eможна вважати кінець, чому він переходить до початку використання A?
emacs(і в bashтому числі) ви можете перейти до початку / кінця рядка також за допомогою Home/ Endклавіш за замовчуванням.
Як і стрибок до кінця рядка - це Ctrl+ E, де Eможна вважати кінець, чому він переходить до початку використання A?
emacs(і в bashтому числі) ви можете перейти до початку / кінця рядка також за допомогою Home/ Endклавіш за замовчуванням.
Відповіді:
У питання є дві сторони, технічна та історична сторони.
Технічна відповідь полягає в тому, що bashвикористовується GNU Readline . У 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, якщо термінальний термін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.