Seperti melompat ke ujung garis adalah Ctrl+ E, di mana Edapat dianggap sebagai akhir, mengapa ia melompat ke awal menggunakan A?
bash
keyboard-shortcuts
xi.lin
sumber
sumber
emacs
(danbash
juga di) Anda dapat melompat ke awal / akhir baris juga denganHome
/End
tombol secara default.Jawaban:
Ada dua sisi pertanyaan, sisi teknis dan sisi historis.
Jawaban teknisnya adalah karena
bash
menggunakan GNU Readline . Direadline
Control-a terikat ke fungsibeginning-of-line
, Anda dapat menunjukkan ini dengan:dimana
\C-a
artinya "Control-a".bind -p
akan menampilkan semua binding (hati-hati menggunakanbind
, mudah untuk memecahkan keyboard Anda jika Anda secara tidak sengaja memberikan opsi atau argumen tambahan).Beberapa binding di atas ditambahkan secara default, yang lain telah saya tambahkan (via
.inputrc
) untuk berbagai terminal yang telah saya gunakan. Sejak bash-2.0, jika terminal termcap berisi kemampuankh
, dankH
kemudian Homedan Endakan diatur kebeginning-of-line
danend-of-line
. Keduanyabash
danreadline
dikembangkan oleh Chet Ramey , pengguna Emacs dan juga pengembangce
klon Emacs.(Harap dicatat, upaya ini untuk merangkum sejarah bertahun-tahun dari beberapa dekade lalu, dan membahas beberapa detail.)
Sekarang, mengapa Kontrol-a khususnya? Readline menggunakan binding standar seperti Emacs . Control-a dalam GNU Emacs memanggil
move-beginning-of-line
, apa yang kami anggap sebagai fungsi "rumah" sekarang.EMACS asli Stallman dan Steel terinspirasi oleh editor E Fred Wright ( editor WYSIWYG awal) dan TECO (editor modal / bahasa samar) - EMACS adalah seperangkat makro untuk TECO. Lihat Essential E [PDF] (dari SAIL , 1980). Namun E menggunakan Control-Form untuk "awal garis", ini pada keyboard "DataDisc" yang memiliki Controlkunci, dan Formtombol. The Keyboard ruang-kadet waktu (kurang Homekunci dengan cara, meskipun memiliki End) umumnya disalahkan untuk antarmuka Keyboard Emacs.
Salah satu fitur EMACS yang diinginkan adalah penggunaan mode pengeditan baris Kontrol-R "real-time" TECO (TECO mendahului terminal CRT / keyboard), Anda dapat melihat ikatan utama pada halaman 6 MIT AI Lab 1978 ITS Pengantar editor EMACS [dipindai PDF], di mana ┌ digunakan untuk menunjukkan Kontrol. Dalam mode ini, ikatan utama semua urutan kontrol, sebagian besar mnemonik: Control-E Akhir baris ini , Control-P pindah ke baris sebelumnya , Control-N pindah ke baris berikutnya , Control-B mundur satu karakter , dan paling tidak Kontrol -Pindah ke awal baris ini , saran Costas tentang "huruf pertama alfabet" untuk ini sama baiknya dengan yang lainnya.
(Pengikatan kunci yang serupa ada dalam
tvlib
paket makro yang bertujuan untuk membuat EMACS berperilaku seperti editor TVEDIT, mengikat kontrol A dan E untuk kalimat mundur dan maju , tetapi menggunakan urutan yang berbeda untuk awal dan akhir baris.)Binding Control-A / Control-E dalam "^ R mode" diterapkan langsung di ITS TECO (1983, versi 1208, lihat
_teco_.tgz
arsip di situs PDP10 / ITS nocrew , atau di Github ), meskipun saya tidak dapat menentukan lebih akurat ketika mereka pertama kali muncul, dan sumber TECO tidak menunjukkan mengapa ada binding tertentu yang dipilih. Dokumen MIT EMACS 1978 di atas menyiratkan bahwa pada 1978 EMACS tidak menggunakan Control-A / Control-E asli TECO, ada kemungkinan bahwascrlin
paket makro (garis layar) mengimplementasikannya.Untuk rekap:
Lihat juga:
sumber
Karena Richard Stallman menyukai Emacs .
Ctrl+ amelompat ke awal baris di Emacs, dan libreadline menggunakan binding kunci yang sama dengan Emacs. Bash menggunakan libreadline.
sumber
set -o vi
, atauecho 'set editing-mode vi' >> ~/.inputrc
, untuk mendapatkan ikatan kunci Vim!Huruf "a" dipilih karena Control + b dan Control + s telah diambil sehingga mereka memutuskan bahwa karena A adalah huruf pertama dari alfabet latin yang akan digunakan. Bagaimana aku tahu? Karena saya mendapat jawaban hari ini dari salah satu pengembang TECO (pendahulu EMACS) dan EMACS.
sumber