Warum benutzt vim hjkl für Cursortasten?


56

Warum sollten Sie die Tasten hjklin derselben Zeile anstelle der Tasten in einem Dreieck verwenden, wasdum sich in Videospielen fortzubewegen?

Warum nicht etwas gleichwertiges mit der rechten Hand, wie ijkloder pl;'?


3
Überprüfen Sie die Wikipedia-Seite von vi , sie enthält ein Bild einer alten Unix- Tastatur, die einige Tastenkombinationen erklärt.
Christian Brabandt

3
Denn vimist davon befreit, mit dem technologischen Fortschritt Schritt zu halten: 3
Alexander

3
Sie können bequem vier Finger einer Hand auf die Tasten drücken und den Cursor in alle vier Richtungen bewegen, ohne die Finger hin und her zu bewegen. Wenn Sie wirklich darüber nachdenken, ist vier in einer Reihe das einzige Cursortastenlayout, das der menschlichen Anatomie entspricht. Die Frage ist wirklich, wie es allen anderen gelingt, etwas falsch zu machen.

4
Eigentlich ist es nicht empfehlenswert, Ihren Index auf den zu setzen h, sondern auf den j(deshalb haben Sie einen "Nippel" auf dem jSchlüssel). Der Grund dafür ist, dass Sie bviel mehr verwenden werden als hund dass ;es in vielen Programmiersprachen :praktisch ist, auf etwas zuzugreifen (und mit der Zeit haben Sie etwas, das in Vim immer praktischer wird).
Nobe4

2
Dieses Thema wird übrigens in der zweiten Frage zu Unix SE
Dmitry Grigoryev

Antworten:


75

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

Als Bill Joy den vi-Texteditor erstellte, verwendete er das ADM-3A-Terminal mit den Pfeilen auf den Tasten. Natürlich hat er die gleichen Schlüssel wiederverwendet und der Rest ist Geschichte!

Bildbeschreibung hier eingeben


27
Dies sollte immer noch auf jeder Tastatur sein! :)
albttx

16
Jetzt habe ich mich gefragt, was für ein Terminal der Typ hat, der Emacs hergestellt hat ...
leeand00

11
@ leeand00: Eine Symbolics LISP Machine Space Cadet-Tastatur . In dem Artikel wird ausdrücklich darauf eingegangen, wie sich das Tastaturdesign auf das Design von Emacs ausgewirkt hat, und es wird auch das Design von Vi mit der allgegenwärtigen Escape-Taste verglichen sowie die Tatsache, dass sich die Escape-Taste sehr praktisch auf der Tastatur des ADM-3A-Terminals befand . Nun, auf der Space Cadet-Tastatur befinden sich die Steuerungs-, Meta-, Super- und Hyper-Tasten, die sich sehr bequem befinden, sowie nicht weniger als 3 verschiedene Umschalttasten, mit denen mehr als 8000 Zeichen eingegeben werden können.
Jörg W Mittag

11
Obwohl diese Antwort als solche korrekt ist, bewegt sie eher die Frage als die Antwort: "Warum hat die ADM-3A-Tastatur hjkleine logischere Form als gewählt ijkl?"
Martin Tournoij

2
@Carpetsmoker: Wir haben erst Ende der 80er Jahre die Tastaturpfeil-Ortungslogik erfunden. Upload.wikimedia.org/wikipedia/commons/3/30/…
Jacob Krall

21

Die Antwort von Nobe4 ist großartig und erklärt, warum wir hjklsehr gut verwenden. Es ist jedoch wirklich interessant, die vollständige Tastatur zu sehen, und viele seltsame Dinge an vim sind sinnvoller, wenn Sie die vollständige Tastatur sehen können, auf der sie entwickelt wurde. Warum verlässt sich vi zum Beispiel so stark auf den escSchlüssel, wenn er sich an einem so seltsamen und unbequemen Ort befindet? Deshalb:

Bildbeschreibung hier eingeben

Wie Sie sehen können, escbefindet sich auf den meisten Tastaturen ein Tabulator. ctrlist eine weitere Taste, die etwas umständlich zu erreichen ist, sich aber an einer sehr bequemen Stelle auf dieser Tastatur befindet (wo normalerweise die Feststelltaste ist).


Hatten Sie vieine <Leader>Zuordnung? Ich dachte, das wäre eine spätere Erfindung ...
Martin Tournoij

@Carpetsmoker Ich denke schon, aber ich bin mir nicht sicher. Vim's :help <leader>hat keinen Signaturtext {not in Vi}und es steht, dass vi hatte :map(obwohl nicht :noremap), also bin ich mir ziemlich sicher, dass vi den Anführer hatte. Selbst wenn dies nicht der Fall wäre, könnte ich mir vorstellen, dass die Geschichte der vi-Tastatur das Design von vim zumindest ein wenig beeinflusst.
DJMcMayhem

Es ist auch schwierig, über Google Informationen zu vi zu finden, da sich die meisten Ergebnisse auf vim beziehen.
DJMcMayhem

@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.html und roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf sind gute Referenzen für vi (POSIX bzw. historical). Sie können auch nvi, elvis, vile oder ex-vi herunterladen (ex-vi ist ein Nachkomme des historischen vi) und sich ansehen, was sie tun oder welche Dokumentation sie haben. Es gibt keine <leader>Funktion in vi.
Random832

Vim wurde ursprünglich für den Amiga entwickelt (Backslash in seiner üblichen [ISO- oder Large Enter] -Position) und basierte auf Stevie, der für den Atari ST (Backslash in der unteren rechten Ecke, nach Enter) entwickelt wurde, aber anscheinend nicht Unterstützung :mapüberhaupt)
Random832

17

Warum diese Pfeile auf diese Tasten gedruckt wurden ... liegt daran, dass sie mit der Steuertaste für die lokale Cursorbewegung verwendet werden können. Strg-H und Strg-J (Rücktaste und Zeilenvorschub) liegen auf der Hand und sind auch heute noch ein einfaches Mnemon. Strg-K ist ein "vertikaler Tabulator", wurde jedoch manchmal für den umgekehrten Zeilenvorschub bei Terminals vor ANSI verwendet. Die Verwendung von Strg-L für einen zerstörungsfreien Vorwärtscursor wurde wahrscheinlich aufgrund der Position der Tastatur gewählt.

Möglicherweise haben Sie auch auf dem Bild der Tastatur in der anderen Antwort bemerkt, dass "HOME" auf der Taste ^/ steht ~. Natürlich bewegt Strg- ^ den Cursor nach Hause (wird je nach Modus nach links oben oder links unten gesendet).

Diese Steuerungszuordnungen wurden auch für Wyse-Terminals, das Kermit-Protokoll, verwendet und in einigen Versionen von PC ANSI.SYS unterstützt.

Quellen:


^ H, ^ K - sehr aufschlussreich, da ich mich heute leicht daran erinnern kann, dass ^ J nach unten geht. Ich konnte mich nie zuverlässig an die Zuordnung von oben nach unten erinnern.
Miroxlav
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.