เช่นเดียวกับการกระโดดไปยังจุดสิ้นสุดของบรรทัดคือCtrl+ Eซึ่งEสามารถคิดได้ว่าเป็นจุดสิ้นสุดทำไมมันกระโดดไปที่จุดเริ่มต้นใช้A?
emacs
(และในbash
เช่นกัน) คุณสามารถข้ามไปยังจุดเริ่มต้น / จุดสิ้นสุดของบรรทัดด้วยปุ่มHome
/ End
โดยค่าเริ่มต้น
เช่นเดียวกับการกระโดดไปยังจุดสิ้นสุดของบรรทัดคือCtrl+ Eซึ่งEสามารถคิดได้ว่าเป็นจุดสิ้นสุดทำไมมันกระโดดไปที่จุดเริ่มต้นใช้A?
emacs
(และในbash
เช่นกัน) คุณสามารถข้ามไปยังจุดเริ่มต้น / จุดสิ้นสุดของบรรทัดด้วยปุ่มHome
/ End
โดยค่าเริ่มต้น
คำตอบ:
มีสองด้านสำหรับคำถามด้านเทคนิคและด้านประวัติศาสตร์
คำตอบทางเทคนิคเป็นเพราะbash
การใช้GNU Readline ในreadline
Control-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
) สำหรับเทอร์มินัลต่างๆที่ฉันใช้ ตั้งแต่ทุบตี-2.0 ถ้า termcap ขั้วมีความสามารถ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
สิ่งที่เราคิดว่าเป็นฟังก์ชั่น "home" ในตอนนี้
EMACS ดั้งเดิมของสตอลแมนและสตีลได้รับแรงบันดาลใจจากบรรณาธิการEของ Fred Wright ( บรรณาธิการ WYSIWYG ยุคแรก) และTECO (บรรณาธิการ / ภาษาที่เป็นคำกริยาลึกลับ) - EMACS เป็นชุดแมโครสำหรับ TECO ดูEssential E [PDF] (จากSAIL , 1980) E ใช้แบบฟอร์มควบคุมสำหรับ "จุดเริ่มต้นของบรรทัด" นี่คือบนแป้นพิมพ์ "DataDisc" ซึ่งมีControlคีย์และFormคีย์ แป้นพิมพ์พื้นที่โรงเรียนนายร้อยของเวลา (ขาดHomeที่สำคัญโดยวิธีการที่แม้ว่ามันจะมีEnd) เป็นตำหนิทั่วไปสำหรับอินเตอร์เฟซแป้นพิมพ์ Emacs
หนึ่งในคุณลักษณะที่พึงประสงค์ของ EMACS คือการใช้งานของ TECO ควบคุมของ-R "เวลาจริง" โหมดการแก้ไขบรรทัด (TECO ถือกำเนิด CRT / ขั้วแป้นพิมพ์) คุณจะเห็นปุ่มลัดบนหน้า 6 จากเอ็มไอทีเอไอแล็บ 1978 ITS รู้เบื้องต้นเกี่ยวกับ เครื่องมือแก้ไข EMACS [สแกน PDF] โดยที่┌ใช้เพื่อแสดงถึงการควบคุม ในโหมดนี้ปุ่มลัดทุกลำดับการควบคุมส่วนใหญ่จำ: การควบคุม-E สิ้นสุดของบรรทัดนี้ , การควบคุม-P ย้ายไปบรรทัดก่อนหน้า , การควบคุม-N ย้ายไปบรรทัดถัดไป , การควบคุม-B ย้อนหลังตัวละครตัวหนึ่งและไม่น้อยควบคุม - ย้ายไปที่จุดเริ่มต้นของบรรทัดนี้ข้อเสนอแนะของ Costas ของ "ตัวอักษรตัวแรกของตัวอักษร" สำหรับสิ่งนี้ดีเท่า ๆ กัน
(การผูกคีย์ที่คล้ายกันอยู่ในtvlib
แพ็คเกจแมโครซึ่งมีวัตถุประสงค์เพื่อทำให้ EMACS ทำงานเหมือนตัวแก้ไข TVEDIT การควบคุมการเชื่อม A และ E กับประโยคย้อนหลังและไปข้างหน้าแต่ใช้ลำดับที่แตกต่างกันสำหรับการเริ่มต้นและสิ้นสุดบรรทัด)
การควบคุม A / Control-E ใน "^ R mode" ถูกนำไปใช้โดยตรงใน ITS TECO (1983, รุ่น 1208, ดู_teco_.tgz
ไฟล์เก็บถาวรที่ไซต์ nocrew PDP10 / ITSหรือGithub ) แม้ว่าฉันจะไม่สามารถระบุได้แม่นยำมากขึ้น เมื่อพวกเขาปรากฏตัวครั้งแรกและแหล่งที่มาของ TECO ไม่ได้ระบุว่าทำไมการเลือกการผูกใด ๆ โดยเฉพาะ เอกสาร 1978 EMACS ของ MIT ข้างต้นบอกเป็นนัยว่าในปี 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
เพื่อรับ keybindings เป็นกลุ่ม!
เลือกตัวอักษร "a" เนื่องจาก Control + b และ Control + s ถูกใช้ไปแล้วพวกเขาจึงตัดสินใจว่าเนื่องจาก A เป็นตัวอักษรตัวแรกของตัวอักษรละตินที่จะเป็นสิ่งที่พวกเขาใช้ ฉันจะรู้ได้อย่างไร เพราะฉันได้รับคำตอบวันนี้จากหนึ่งในผู้พัฒนา TECO (บรรพบุรุษของ EMACS) และ EMACS