ทำไมเป็นกลุ่มใช้ hjkl สำหรับปุ่มเคอร์เซอร์?


56

เหตุใดจึงต้องใช้ปุ่มต่าง ๆhjklในบรรทัดเดียวกันแทนที่จะเป็นปุ่มในรูปสามเหลี่ยมเช่นwasdใช้เล่นวิดีโอเกม

ทำไมไม่ได้เป็นสิ่งที่เทียบเท่ากับมือข้างขวาเหมือนijklหรือpl;'?


3
ตรวจสอบว่าหน้า Wikipedia ของviมีรูปภาพของแป้นพิมพ์ Unix โบราณที่อธิบายถึงคำสำคัญบางอย่าง
Christian Brabandt

3
เพราะvimได้รับการยกเว้นไม่ทันกับความก้าวหน้าทางเทคโนโลยี: 3
อเล็กซานเดอร์

3
คุณสามารถใช้สี่นิ้วในมือเดียวบนปุ่ม hjkl ได้อย่างสะดวกสบายและเลื่อนเคอร์เซอร์ไปทั้งสี่ทิศทางโดยไม่ต้องเลื่อนนิ้วไปมา หากคุณคิดเกี่ยวกับมันจริง ๆ สี่ในแถวเป็นเค้าโครงเคอร์เซอร์คีย์เดียวที่สอดคล้องกับกายวิภาคของมนุษย์ คำถามคือวิธีการที่ทุกคนจัดการเพื่อให้มันผิด

4
ที่จริงแล้วไม่แนะนำให้ใส่ดัชนีของคุณhแต่ควรอยู่บนj(นั่นคือสาเหตุที่คุณมี "หัวนม" บนjกุญแจ) เหตุผลก็คือคุณจะใช้งานbได้มากกว่าhและการ;เข้าถึงได้ง่ายมีประโยชน์ในการเขียนโปรแกรมภาษาจำนวนมาก (และด้วยกะคุณ:จะมีประโยชน์มากขึ้นใน Vim)
nobe4

2
BTW หัวข้อนี้จะครอบคลุมในคำถามที่ได้รับการโหวตเป็นอันดับสองในUnix SE
Dmitry Grigoryev

คำตอบ:


75

จากhttp://www.catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys/ :

เมื่อ Bill Joy สร้างโปรแกรมแก้ไขข้อความ vi เขาใช้เทอร์มินัล ADM-3A ซึ่งมีลูกศรบนปุ่ม hjkl โดยปกติเขานำกุญแจเดียวกันมาใช้และส่วนที่เหลือคือประวัติ!

ป้อนคำอธิบายรูปภาพที่นี่


27
นี่ควรจะเป็นบนคีย์บอร์ดทุกอัน! :)
albttx

16
ตอนนี้คุณได้มีฉันสงสัยว่าสิ่งที่ชนิดของขั้วคนที่ทำมี emacs ...
leeand00

11
@ leeand00: การSymbolics LISP เครื่องพื้นที่โรงเรียนนายร้อยแป้นพิมพ์ บทความนี้กล่าวถึงการออกแบบคีย์บอร์ดอย่างชัดเจนว่ามีอิทธิพลต่อการออกแบบของ Emacs อย่างไรและมันเปรียบเทียบกับการออกแบบของ Vi ด้วยคีย์ Escape ที่แพร่หลายและความจริงที่ว่า Escape ตั้งอยู่อย่างสะดวกบนคีย์บอร์ดของเทอร์มินัล ADM-3A . บนแป้น Space Cadet นั้นมีปุ่ม Control, Meta, Super และ Hyper ซึ่งตั้งอยู่ในทำเลที่สะดวกมากและไม่น้อยกว่า 3 ปุ่ม Shift ที่แตกต่างกันซึ่งอนุญาตให้พิมพ์ได้มากกว่า 8000 ตัวอักษร
Jörg W Mittag

11
ในขณะที่คำตอบนี้ถูกต้องเช่นนั้นมันเป็นการย้ายคำถามมากกว่าตอบ: "ทำไมแป้นพิมพ์ ADM-3A จึงเลือกhjklและไม่ได้มีรูปทรงที่สมเหตุสมผลเช่นijklนี้"
Martin Tournoij

2
@Carpetsmoker: เราไม่ได้ประดิษฐ์แป้นพิมพ์ลูกศรตรรกะตำแหน่งจนกว่าจะถึงปลายยุค 80 อัพโหลด.wikimedia.org/wikipedia/commons/3/30/…
Jacob Krall

21

คำตอบของ Nobe4นั้นยอดเยี่ยมมากและอธิบายว่าทำไมเราจึงใช้งานได้hjklดีมาก อย่างไรก็ตามมันเป็นเรื่องที่น่าสนใจมากที่ได้เห็นแป้นพิมพ์แบบเต็มและสิ่งแปลก ๆ มากมายเกี่ยวกับเสียงเรียกเข้ามีความหมายมากขึ้นเมื่อคุณเห็นแป้นพิมพ์เต็มรูปแบบที่ออกแบบไว้ ตัวอย่างเช่นเหตุใด vi จึงพึ่งพาescคีย์อย่างหนักเมื่ออยู่ในที่ที่แปลกและอึดอัด นี่คือเหตุผล:

ป้อนคำอธิบายรูปภาพที่นี่

อย่างที่คุณเห็นescคือที่ ๆ แท็บอยู่บนคีย์บอร์ดส่วนใหญ่ ctrlเป็นอีกคีย์หนึ่งที่เข้าถึงได้ยาก แต่อยู่ในตำแหน่งที่สะดวกสบายบนแป้นพิมพ์นี้ (โดยปกติแล้วตัวพิมพ์ใหญ่จะล็อค)


ไม่viได้มี<Leader>การทำแผนที่? ผมคิดว่าเป็นสิ่งประดิษฐ์ในภายหลัง ...
มาร์ติน Tournoij

@Carpetsmoker ฉันคิดอย่างนั้น แต่ฉันไม่แน่ใจ Vim :help <leader>ไม่มี{not in Vi}ข้อความลายเซ็นและมันบอกว่า vi มี:map(แม้ว่าจะไม่ใช่:noremap) ดังนั้นฉันค่อนข้างแน่ใจว่า vi มีผู้นำ แม้ว่ามันจะไม่เป็นเช่นนั้นฉันก็จะจินตนาการถึงประวัติของคีย์บอร์ด vi อย่างน้อยก็น่าจะมีอิทธิพลต่อการออกแบบเสียงเรียกเข้า
DJMcMayhem

นอกจากนี้ยังยากที่จะหาข้อมูลเกี่ยวกับ vi ผ่าน Google เนื่องจากผลลัพธ์ส่วนใหญ่เกี่ยวกับกลุ่ม
DJMcMayhem

@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.htmlและroguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdfเป็นการอ้างอิงที่ดีสำหรับ vi (POSIX และประวัติตามลำดับ) คุณยังสามารถดาวน์โหลด nvi, elvis, vile หรือ ex-vi (ex-vi เป็นผู้สืบทอดของ vi ที่ผ่านมา) และดูสิ่งที่พวกเขาทำหรือเอกสารของพวกเขา ไม่มี<leader>คุณสมบัติใน vi
Random832

นอกจากนี้ Vim ได้รับการพัฒนาสำหรับ Amiga (แบ็กสแลชในตำแหน่งปกติ [ISO หรือ Large Enter]) และจาก Stevie ซึ่งใช้สำหรับ Atari ST (แบ็กสแลชที่มุมขวาล่างที่ผ่านมา แต่ไม่เห็นได้ชัด สนับสนุน:mapเลย)
Random832

17

เหตุใดลูกศรเหล่านี้จึงพิมพ์บนปุ่มเหล่านี้ ... เป็นเพราะสามารถใช้กับปุ่มควบคุมสำหรับการเลื่อนเคอร์เซอร์ท้องถิ่น Ctrl-H และ Ctrl-J (แบ็คสเปซและการป้อนบรรทัด) เห็นได้ชัดและช่วยในการจำง่ายแม้วันนี้ Ctrl-K คือ "แท็บแนวตั้ง" แต่บางครั้งก็ใช้สำหรับป้อนบรรทัดย้อนกลับบนเทอร์มินัล ANSI ล่วงหน้า การใช้ Ctrl-L สำหรับเคอร์เซอร์ไปข้างหน้าแบบไม่ทำลายอาจถูกเลือกตามตำแหน่งคีย์บอร์ด

คุณอาจสังเกตเห็นในภาพของแป้นพิมพ์ในคำตอบอื่น ๆ ที่ "บ้าน" อยู่บนปุ่ม^/ ~แน่นอนว่า Ctrl- ^ จะวางเคอร์เซอร์ไว้ (ส่งไปที่ด้านบนซ้ายของหน้าจอหรือล่างซ้ายขึ้นอยู่กับโหมด)

การแมปควบคุมเหล่านี้ยังใช้สำหรับเทอร์มินัล Wyse, โปรโตคอล Kermit และได้รับการสนับสนุนใน PC ANSI.SYS บางรุ่น

แหล่งที่มา:


^ H, ^ K - แจ่มใสมากตั้งแต่วันนี้ฉันจำได้ง่ายว่า ^ J เคลื่อนลง ฉันไม่สามารถจำการมอบหมายการขึ้นลงได้อย่างน่าเชื่อถือ
miroxlav
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.