Pourquoi vim utilise-t-il hjkl pour les touches du curseur?


56

Pourquoi utiliser les touches hjklsur la même ligne au lieu des touches dans un triangle comme wasdpour se déplacer sur des jeux vidéo?

Pourquoi pas quelque chose d'équivalent avec la main droite, comme ijklou pl;'?


3
Vérifiez cette page Wikipedia de vi , elle contient une image d’un ancien clavier de machine Unix qui explique certaines combinaisons de touches.
Christian Brabandt

3
Parce que vimest exempt de suivre les progrès technologiques: 3
Alexander

3
Vous pouvez placer quatre doigts d'une main sur les touches hjkl, confortablement , et déplacer le curseur dans les quatre directions sans déplacer les doigts d'avant en arrière. Si vous y réfléchissez vraiment, quatre rangées d'affilée constituent la seule disposition des touches du curseur compatible avec l'anatomie humaine. La question est vraiment de savoir comment tout le monde réussit à se tromper.

4
En fait, il n'est pas recommandé de mettre votre index sur le hmais plutôt sur le j(c'est pourquoi vous avez un "mamelon" sur la jclé). La raison en est que vous en utiliserez bbeaucoup plus het qu'avoir ;accès est pratique dans de nombreux langages de programmation (et avec un décalage, ce :qui est de plus en plus pratique dans Vim).
Nobe4

2
BTW, ce sujet est couvert dans la deuxième question la plus votée sur Unix SE
Dmitry Grigoryev

Réponses:


75

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

Lorsque Bill Joy a créé l’éditeur de texte vi, il a utilisé le terminal ADM-3A, sur lequel les flèches se trouvaient sur les touches hjkl. Naturellement, il a réutilisé les mêmes clés et le reste appartient à l'histoire!

entrez la description de l'image ici


27
Cela devrait toujours être sur chaque clavier! :)
albttx

16
Maintenant, vous me demandez quel type de terminal le gars qui a fait emacs avait ...
leeand00

11
@ leeand00: Un clavier LISP Symbolics Machine Space . L'article explique explicitement comment le design du clavier a influencé le design d'Emacs, et le compare également au design de Vi avec sa touche Escape omniprésent, et au fait que l'Escape était très bien situé sur le clavier du terminal ADM-3A. . Eh bien, sur le clavier Space Cadet, il y a les touches Contrôle, Méta, Super et Hyper qui sont très bien situées, ainsi que 3 touches Maj différentes permettant de saisir plus de 8 000 caractères.
Jörg W Mittag

11
Bien que cette réponse soit correcte en tant que telle, elle déplace en quelque sorte la question plutôt que d'y répondre: "Pourquoi le clavier de l'ADM-3A a-t-il choisi hjklet non une forme plus logique telle que ijkl?"
Martin Tournoij

2
@Carpetsmoker: nous n'avons pas inventé jusqu'à ce que les fin des années 80 la logique de position de la flèche du clavier upload.wikimedia.org/wikipedia/commons/3/30/...
Jacob Krall

21

La réponse de Nobe4 est excellente et explique pourquoi nous l'utilisons hjkltrès bien. Cependant, il est vraiment intéressant de voir le clavier complet, et de nombreuses choses étranges à propos de vim ont plus de sens quand vous pouvez voir le clavier complet sur lequel il a été conçu. Par exemple, pourquoi vi compte-t-il tant sur la escclé, alors qu’elle se trouve dans un endroit aussi étrange et inconfortable? C'est pourquoi:

entrez la description de l'image ici

Comme vous pouvez le constater, l’ esconglet se trouve sur la plupart des claviers. ctrlest une autre touche légèrement difficile à atteindre, mais située à un emplacement très confortable sur ce clavier (où le verrouillage des majuscules est généralement utilisé).


Avait viune <Leader>cartographie? Je pensais que c'était une invention postérieure ...
Martin Tournoij

@Carpetsmoker Je pense que oui, mais je ne suis pas vraiment sûr. Vim's :help <leader>n'a pas le {not in Vi}texte de signature , et il est écrit que vi avait :map(bien que non :noremap), alors je suis à peu près sûr que vi avait un leader. Même si ce n'était pas le cas, j'imagine que l'histoire du clavier vi aurait au moins une influence sur la conception de vim.
DJMcMayhem

Il est également difficile de trouver des informations sur vi via google, car la plupart des résultats finissent par concerner vim.
DJMcMayhem

@DJMcMayhem pubs.opengroup.org/onlinepubs/009696699/utilities/vi.html et roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf sont de bonnes références pour vi (POSIX et historique, respectivement). Vous pouvez également télécharger nvi, elvis, vile ou ex-vi (ex-vi est un descendant de vi historique) et regarder ce qu’ils font ou leur documentation. Il n'y a aucune <leader>fonctionnalité dans vi.
Random832

En outre, Vim a été développé à l'origine pour l'Amiga (barre oblique inverse dans sa position habituelle [ISO ou Large Enter]), et basé sur Stevie qui était destiné à l'Atari ST (barre oblique inverse dans le coin inférieur droit, entrée précédente, mais apparemment soutien :mapdu tout)
Aléatoire832

17

Quant à savoir pourquoi ces flèches ont été imprimées sur ces touches ... c’est parce qu’elles pourraient être utilisées avec la touche de contrôle pour le déplacement du curseur local. Ctrl-H et Ctrl-J (retour arrière et saut de ligne) sont évidents, et un mnémonique facile, même aujourd'hui. Ctrl-K est un "onglet vertical", mais a parfois été utilisé pour un saut de ligne inverse sur les terminaux pré-ANSI. L'utilisation de Ctrl-L pour un curseur non destructif vers l'avant a probablement été choisie en fonction de l'emplacement de son clavier.

Vous avez peut-être aussi remarqué dans l’image du clavier de l’autre réponse que "HOME" est sur la touche ^/ ~. Bien sûr, Ctrl- ^ abrite le curseur (envoie en haut à gauche de l'écran ou en bas à gauche, selon le mode).

Ces mappages de contrôle étaient également utilisés pour les terminaux Wyse et le protocole Kermit et étaient pris en charge dans certaines versions de PC ANSI.SYS.

Sources:


^ H, ^ K - très éclairant, car aujourd'hui je me souviendrai facilement que ^ J descend. Je n'ai jamais pu me souvenir de l'attribution de haut en bas de manière fiable.
miroxlav
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.