Bir çizginin sonuna atlamak gibi Ctrl+ E, nerede Eson olarak düşünülebilir, neden kullanmaya başlamak için atlar A?
emacs
(ve içinde bash
) varsayılan olarak Home
/ End
tuşlarıyla da satırın başına / sonuna atlayabileceğinizi unutmayın.
Bir çizginin sonuna atlamak gibi Ctrl+ E, nerede Eson olarak düşünülebilir, neden kullanmaya başlamak için atlar A?
emacs
(ve içinde bash
) varsayılan olarak Home
/ End
tuşlarıyla da satırın başına / sonuna atlayabileceğinizi unutmayın.
Yanıtlar:
Sorunun teknik ve tarihsel tarafı olmak üzere iki tarafı vardır.
Teknik cevap çünkü bash
kullanımları GNU Readline . In readline
Control 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 -p
tü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 .inputrc
kullandığım çeşitli terminaller için (üzerinden ) ekledim . Bash-2.0, klemens termcap yetenekleri içeriyorsa kh
ve kH
sonra Homeve Endayarlanır beginning-of-line
ve end-of-line
. Hem bash
ve readline
tarafından geliştirilen Chet Ramey , bir Emacs kullanıcı ve ayrıca geliştiricisi ce
bir 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 tvlib
makro paketindedir .)
"^ R modunda" Kontrol-A / Kontrol-E bağlamaları ITS TECO doğrudan uygulanmıştır (1983, sürüm 1208, bkz _teco_.tgz
adresinden 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 scrlin
makro paketi (ekran hattı) bu uygulamaya koydu.
Özetlemek gerekirse:
Ayrıca bakınız:
Çü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.
set -o vi
veya unutmayın echo 'set editing-mode vi' >> ~/.inputrc
!
"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.