Ctrl + A kısayolu neden terminalde bir satırın başına atlıyor?


11

Bir çizginin sonuna atlamak gibi Ctrl+ E, nerede Eson olarak düşünülebilir, neden kullanmaya başlamak için atlar A?


1
Sen "Anfang" için "A" düşünebilirsiniz
Anthon

Veya "A" alpabet'in ilk harfidir
Costas

Lütfen emacs(ve içinde bash) varsayılan olarak Home/ Endtuşlarıyla da satırın başına / sonuna atlayabileceğinizi unutmayın.
jimmij

Yanıtlar:


20

Sorunun teknik ve tarihsel tarafı olmak üzere iki tarafı vardır.

Teknik cevap çünkü bashkullanımları GNU Readline . In readlineControl bir işleve bağlı olduğu beginning-of-line, bununla gösterebilir:

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

burada \C-a"Kontrol-a" anlamına gelir. bind -ptüm bağlantıları gösterir (kullanırken dikkatli olun bind, yanlışlıkla ek seçenekler veya argümanlar sağlarsanız klavyenizi kırmak kolaydır).

Yukarıdaki bağlantılardan bazıları varsayılan olarak eklenir, diğerleri .inputrckullandığım çeşitli terminaller için (üzerinden ) ekledim . Bash-2.0, klemens termcap yetenekleri içeriyorsa khve kHsonra Homeve Endayarlanır beginning-of-lineve end-of-line. Hem bashve readlinetarafından geliştirilen Chet Ramey , bir Emacs kullanıcı ve ayrıca geliştiricisi cebir Emacs klonu.


(Unutmayın, bu, onlarca yıl öncesine dayanan uzun yılların tarihini ve bazı ayrıntılar üzerinde parıldamaya özetliyor.)

Şimdi, neden özellikle Control-a? Readline varsayılan olarak Emacs benzeri bağlantılar kullanır . GNU Emacs'taki Control-a move-beginning-of-lineşimdi "ev" işlevi olarak gördüğümüz şeyi çağırıyor .

Stallman ve Steel'in orijinal EMACS'lerinden esinlenerek Fred Wright'ın E editörü (erken WYSIWYG editörü) ve TECO (şifreli mod editörü / dili) - EMACS, TECO için bir makro setiydi. Bakınız Essential E [PDF] ( SAIL , 1980'den). E ancak "satır başlangıcı" için Kontrol-Formunu kullandı, bu bir Controltuşa ve bir Formtuşa sahip olan "DataDisc" klavyesindeydi . Zamanın uzay harbiyeli klavyesi (bir Hometuşa sahip olmasına rağmen, bir tuşa sahip olmayan End) Emacs klavye arayüzü için genellikle suçlanır .

EMACS'in arzu edilen özelliklerinden biri, TECO'nun Control-R "gerçek zamanlı" hat düzenleme modunun kullanılmasıydı (TECO, CRT / klavye terminallerinden önce gelir), MIT AI Lab 1978 ITS'nin 6. sayfasındaki tuş bağlantılarını görebilirsiniz . EMACS düzenleyicisi [taranan PDF]; burada Control, Kontrol anlamına gelir. Bu modda, anahtar bağların tümü büyük ölçüde anımsatıcı olan kontrol dizileriydi: Kontrol-E Bu satırın sonu , Kontrol-P önceki satıra gitme , Kontrol-N sonraki satıra gitme , Kontrol-B geri bir karakter ve en az Kontrol -Bu satırın başlangıcına doğru hareket eden Costas'ın "alfabenin ilk harfi" önerisi bu kadar iyi.

(Benzer bir anahtar bağlama, EMACS'nin TVEDIT editörü, A ve E bağlama kontrolü gibi geri ve ileri cümle gibi davranmasını amaçlayan , ancak satırın başlangıcı ve sonu için farklı sekanslar kullanmasını amaçlayan tvlibmakro paketindedir .)

"^ R modunda" Kontrol-A / Kontrol-E bağlamaları ITS TECO doğrudan uygulanmıştır (1983, sürüm 1208, bkz _teco_.tgzadresinden arşivi nocrew PDP10 / ITS , ya da sahada Github ben daha doğru tespit edemez olsa) ilk ortaya çıktıklarında ve TECO kaynağı neden belirli bir bağlantının seçildiğini göstermez. 1978 MİT EMACS belge yukarıda 1978'de EMACS TECO yerli Kontrol-A / Kontrol-E kullanmıyordu ima, bu kadar mümkün olduğunu scrlinmakro paketi (ekran hattı) bu uygulamaya koydu.

Özetlemek gerekirse:

  • bash readline kullanır
  • readline anahtar bağlantıları takip ediyor Emacs / EMACS
  • orijinal EMACS, birçok özelliği miras alan TECO ile oluşturuldu
  • TECO'nun etkileşimli mod makroları (çoğunlukla) anımsatıcı kontrol anahtarı bağlamaları kullandı ve "satır başlangıcı" Kontrol-A'ya atandı

Ayrıca bakınız:


6

Çünkü Richard Stallman sever Emacs .

Ctrl+ aEmacs'ta satırın başına atlıyor ve libreadline Emacs ile aynı anahtar bağlamaları kullanıyor. Bash libreadline kullanır.


2
Ayrıca Vim tuş bağlamalarını yapabileceğinizi set -o viveya unutmayın echo 'set editing-mode vi' >> ~/.inputrc!
wchargin

İnsanlar neden bu cevap noktalarını veriyor? Soruydu neden komut satırının başlangıcına gitmek gibi bir ctrl + seçildi, komut gibi değil.
wurtel

@Wurtel Cevap ilk cümlede, bkz. "Gnu'nun tarihi".
Jasen

4
Üzgünüm, çünkü Richard Stallman Emacs'ı seviyor. bana neden ctrl-a beni satırın başına götürdüğünü söylemiyor. Neden ctrl-s veya ctrl-x ya da her neyse ?!
wurtel

0

"A" harfi seçildi, çünkü Control + b ve Control + s çoktan alınmıştı, bu yüzden A'nın latin alfabesinin ilk harfleri olduğu için karar verdiklerine karar verdiler. Nasıl bilebilirim? Çünkü cevabı bugün TECO (EMACS'in öncüsü) ve EMACS'nin geliştiricilerinden birinden aldım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.