Pourquoi l'utilisation des touches fléchées en mode normal est-elle considérée comme une mauvaise pratique?

43

Je l'ai lu dans de nombreux articles ( par exemple ) qu'il est déconseillé d'utiliser les touches fléchées en mode normal. Quelqu'un pourrait-il expliquer pourquoi est-ce considéré comme une mauvaise pratique, voire pas du tout?

Ankit Jain
la source
5
Une bonne raison de ne pas utiliser hjkl est si vous utilisez une autre configuration de clavier. Par exemple, les hjkl ne sont pas corrélés spatialement dans Dvorak et sont donc difficiles à utiliser.
Kylos
1
@Kylos j'utilise hjkldans Dvorak. C'est certainement moins sensé que sur qwerty, mais je ne sais pas si je l'appellerais "difficile à utiliser"; ce ne sont que des clés, et ce n’est pas difficile de les atteindre ni de quoi que ce soit une fois que vous y êtes habitué.
Dougal
2
Il existe de nombreux mythes hjklselon lesquels la meilleure option pour déplacer un document devrait être. La vérité est que certains claviers avaient les touches fléchées activées hjklau moment de la création de vi. Vi a donc utilisé les mêmes touches en mode normal pour correspondre à la disposition du clavier. Voici un article avec une photo du clavier: catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys
allo
8
Tout ce qui a la réputation d'être difficile attire un certain type de personne. Crossfit, Vim, programmation fonctionnelle, véganisme, etc. Désormais, toutes les personnes qui entreprennent l'une de ces activités ne le sont pas, mais elles se manifestent souvent de manière disproportionnée. Et une partie du charme pour cette personne est la difficulté de l'activité elle-même . Les choses qui abaissent la barre d'entrée sont un anathème pour eux: cela les rend moins spéciaux. Il y a des raisons de préférer hjkl. Bons. Mais ils deviennent gonflés au statut de dogme, au moins en partie, parce que les gens doivent se sentir mieux que les autres.
Jared Smith
@Kylos Je conviens que ce hjklne sont pas les meilleurs de dvorak. Mais en tant qu'utilisateur dvorak, je peux les trouver un peu pratiques, car ils sont jumelés: comme jksur un côté du tableau; et hl de l'autre côté.
Nilon

Réponses:

66

En fait, ce n’est pas une mauvaise pratique.

De nombreuses personnes ( y compris le document de Vim, comme l'indique la réponse de @B Layer ) soutiennent que vous ne devez pas utiliser les touches fléchées, car cela vous fait bouger les mains de la rangée de départ (la deuxième ligne de votre clavier où vous en avez hjkl) et cela vous rend moins efficace. .

C’est (au moins à l’OMI) un mauvais résultat de la part du cercle de "puristes" de vim: les nouveaux utilisateurs le suivent aveuglément, certains désactivent même les touches fléchées et se plaignent ensuite de ne pas être aussi efficaces qu’avant.

Si vous vous sentez plus à l' aise: La seule règle à l' utilisation réelle vim est de l' utiliser efficacement Leftet Rightque het l que ce soit, utilisez les touches fléchées. Vim a même l' set mouse=aoption si vous voulez utiliser une souris!

Une fois que vous vous habituez à vim et mieux avec les différents mouvements disponibles ( f, t, ,, ;, w, b, e, ge, et au fond tout :h quickref) vous pourriez réaliser que vous ne pas utiliser les touches fléchées beaucoup. Et si vous les utilisez toujours, ce n'est pas un problème, utilisez ce que vous êtes le plus efficace.

Notez que l'argument de ne pas quitter la ligne d'arrivée pour plus d'efficacité n'est pas si bon à mon avis: Si vous jetez un coup d'œil à Pourquoi vim utilise-t- il hjkl, vous verrez que ces clés ont été choisies parce qu'il n'y avait pas de flèche clés quand Vi a été écrit. On pourrait soutenir que peut-être si les claviers étaient différents à ce moment-là, personne ne considérerait que l'utilisation des touches fléchées n'est pas une bonne pratique.

statox
la source
13
Je me suis souvent retrouvé très mal à plier mon poignet pour atteindre les touches fléchées, car j'étais tellement habitué à ces flèches. J'ai fini par désactiver les touches fléchées pour m'habituer hjklà soulager la douleur de mon poignet.
Shahbaz
9
J'aimerais souligner que cela n'a de sens que sur les claviers QWERTY. Pour certaines mises en page, hjkl peut être une vraie douleur.
coteyr
1
Vous pouvez utiliser les deux options: que vous choisissiez hjkl ou des flèches, vous pouvez lier l’autre jeu de touches haut / bas pour vous déplacer par lignes à l’écran et non par lignes. Cela aide lors de l'édition de fichiers avec de longues lignes.
user31389
1
Je n'avais pas réalisé avant de lire votre réponse que je n'utilisais presque pas hjkl et les touches fléchées, car je m'étais habitué aux commandes de mouvement avancées que vous avez mentionnées. Bon point!
Spiros
4
Cependant que je vous remercie de votre à mon oeil bonne réponse, pourrais - je s'il vous plaît l' emporter sur vous en tant que modérateur collègue et vi aficionado à essayer votre plus difficile de trouver un phrasé alternative moins « miteux » à coups de cercle qui ne suscite pas l'image vivement déranger d'un anneau sans pantalon de garçons ou d'hommes se masturbant ensemble en compagnie les uns des autres‽ Pretty please? :)
tchrist
40

Je ne sais pas si c'est vraiment pertinent, mais je suis un ancien, alors voici un peu d'histoire.

Auparavant, les terminaux VT100 possédaient des touches fléchées, mais en appuyant sur l'un d'eux transmettait une séquence d'échappement comme <ESC>[Apour monter, <ESC>[Bdescendre, etc.
De plus, étant un terminal série communiquant à 9600 bauds, l'utilisateur pouvait appuyer trop rapidement sur les touches pour transmettre toute la séquence, ce qui entraînerait une pression sur une touche pour interrompre la séquence de la touche précédente et créer de la confusion vi.

Ceci entraînerait inexplicablement que vi passe en mode insertion et insère [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B [B]]))] B »dans votre fichier si vous maintenez la flèche vers le bas. Je dis inexplicablement car rien dans cette séquence ne devrait passer en mode insertion et le fait que chaque séquence commence par un caractère ESC aurait dû quitter le mode insertion. Mais quand même, il y aurait des déchets. Pas toujours - juste quand tu étais pressé.

On en a vite eu marre et on a décidé de s'en tenir aux hjklclés.

dwilliss
la source
8
Pour une raison quelconque, les programmes de terminal TCP utilisent toujours les touches fléchées basées sur échappement et ne permettent toujours pas de distinguer de manière fiable à 100% le fait d'appuyer sur la touche échappement ou d'envoyer le premier octet d'une séquence d'échappement de touches fléchées.
Supercat
1
@supercat Ils font un moyen fiable de distinguer ceux -ci . Cela s'appelle en utilisant SC81T . Le problème est que beaucoup de programmes ne négocient pas cela et que certains terminaux ne le prennent probablement pas en charge.
jamessan
1
@ jamessan: Si je comprends bien, vous suggérez que le moyen fiable de distinguer d'échappement des touches fléchées consiste à ne pas utiliser les touches fléchées d'échappement, ce qui rejoint mon commentaire "pour quelque raison que ce soit" à propos des programmes utilisant encore échappement- touches fléchées basées.
Supercat
Hmm, j'ai un vieux terminal IBM qui peut émuler un VT100, pourrait avoir à essayer ceci
un oreillette
3
Je peux certainement confirmer que cela était vrai, du moins il y a bien longtemps, car, dans les années 80, nous devions installer des panneaux dans la salle des terminaux de premier cycle pour ne pas utiliser les touches fléchées dans vi pour cette raison même. Ils n'arrêtaient pas de bousiller leurs fichiers lorsque le pilote tty laissait tomber des interruptions.
tchrist
28

Bien que je convienne avec @statox que personne ne devrait être châtié, évité, excommunié ou pris de plumes s’il décide d’utiliser les touches fléchées ... utilisez votre logiciel comme bon vous semble ... Je ne voudrais pas exsuder une attitude de laisser-faire si je guidais un nouvel utilisateur ouvert d’esprit. Je leur recommande fortement de commencer par suivre les meilleures pratiques. Ce sont des "meilleures pratiques" pour une raison ... elles ont été utilisées à bon escient par de nombreuses personnes qui sont venues avant vous et moi.

Heck, même propres coups de pouce d'aide de vim dans cette direction , mais pas sans hyperbole ( « très bas lent ») ...

Vous pouvez également déplacer le curseur en utilisant les touches fléchées. Si vous le faites, cependant, vous ralentissez considérablement votre édition car pour appuyer sur les touches fléchées, vous devez déplacer votre main des touches de texte aux touches fléchées. Étant donné que vous le faites des centaines de fois par heure, cela peut prendre beaucoup de temps.

Il y a aussi le fait que les choix que vous faites au début peuvent devenir des habitudes difficiles à changer si vous voulez changer à l'avenir. Donc, toutes les autres choses étant égales par ailleurs, pourquoi ne pas adopter maintenant l'habitude recommandée plutôt que de prendre le risque que l'utilisation des touches fléchées soit inefficace ou tue les carpiens?

Dans l’ensemble, envisagez de faire un effort honnête pour faire les choses sans les touches de direction. Après un laps de temps raisonnable, si vous ne pouvez tout simplement pas vivre sans haut / bas / gauche / droite ... ne le faites pas.

... est ce que je dirais à un nouvel utilisateur qui était intéressé par mon opinion. Ne le prenez pas personnellement si vous n'êtes pas d'accord (je vous parle, votant vers le bas).

Couche b
la source
9
Même si vous acceptez que c’est mieux que les touches fléchées (je n’en suis même pas convaincu), c’est quelque part au bas de la liste de toutes les "meilleures pratiques" possibles. Je dirais qu'il y a beaucoup de choses plus importantes que d'utiliser hjkl.
Martin Tournoij
5
@Carpetsmoker Je ne pense pas qu'il soit nécessaire de classer les meilleures pratiques. Si vous ne souhaitez pas utiliser les touches fléchées, pourquoi ne pas suivre les recommandations de Vim? Particulièrement si vous êtes nouveau dans Vim ... nous savons tous combien il est difficile de changer la façon dont nous faisons quelque chose une fois que cela est enraciné.
B Layer
1
"Vous ralentissez grandement votre montage" - cela me semble être une exagération ... néanmoins, je conviens que cela vaut la peine d'essayer. En toute honnêteté, ce n’est pas assez important pour faire la guerre.
Shadow
2
@BLayer no not not here - c'est la discussion la plus civile sur le sujet que je pense avoir vue. Mais des guerres ont certainement eu lieu ...
Shadow
1
don't think it's necessary to rank best practicesEh bien, il me semble que nous devrions nous concentrer sur les choses qui nous donnent le meilleur rapport qualité-prix dans la vie, étant donné que les ressources sont limitées et que la vie est courte. Je sais que les clés hjkl ont un cœur dû à une enfance malmenée qui joue au voleur, voyou, angband, etc. sur un ordinateur portable sans pavé numérique, mais certaines personnes ont mieux passé leur enfance et devront "désapprendre" les touches de direction. Je pense que l'apprentissage des mouvements, gammes, etc. est un moyen beaucoup plus utile de passer du temps.
Martin Tournoij
16

D’autres réponses ont indiqué que la perte d’efficacité due au fait de déplacer vos mains du rang opposé n’était pas si grave, et je suis plutôt d’accord avec vous. Cependant, ce qui est important, c’est lorsque vous apprenez vim, en utilisant toujours les touches fléchées pour éviter de revenir en mode normal.

En d'autres termes, utiliser un seul utilisateur lorsque vous en utilisiez un hne représente pas une perte de productivité énorme, mais utiliser un utilisateur où vous auriez pu l'utiliser EscI est une perte énorme.

C'est pourquoi les gens vous disent d'éviter les touches fléchées lorsque vous apprenez vim, car cela vous oblige à apprendre le mode normal au lieu de ne jamais quitter le mode insertion. Le mode normal est où tous vos gains d'efficacité sont.

Karl Bielefeldt
la source
1
+1 En d'autres termes: "N'utilisez pas les touches fléchées, et n'utilisez pas hjkl." (Conserver l'hyperbole intentionnelle.)
wchargin
3
En fait, au lieu de 10 fois que vous auriez pu utiliser 1 0 ou, encore plus simple, Home. Ce dernier fonctionne même dans Windows Notepad.
Ruslan
7

Les gens disent que vous ne devriez pas utiliser les touches fléchées pour deux raisons principales. Certains prétendent que hjkl est préféré car il garde les mains sur la ligne d'arrivée, ce qui n'est pas faux , mais cela n'a pas d'importance. D'autres, y compris moi-même, diraient que vous ne devriez pas utiliser les touches fléchées si vous déplacez plus de quelques caractères, mais vous ne devriez pas non plus utiliser hjkl.

L'important n'est pas de savoir quelles clés vous utilisez, mais plutôt combien . Si vous voulez aller au début du mot, vous ne frappez pas hhh; vous frappez b. La fin du mot est e, pas llll. A partir de la ligne: 0, la fin de la ligne: $. Et rien de plus, /searchpour le texte qui existe où vous voulez aller. (ou celle des commandes de mouvement avancées que vous préférez).

Mais chaque fois que vous vous retrouvez à taper la même touche plus de deux fois de suite, il existe un meilleur moyen de le faire.

Rayon
la source
7

Une déclaration plus précise pourrait être "utiliser les touches de direction est une mauvaise pratique pour essayer de mieux apprendre vim " . Les personnes qui découvrent vim sont habituées à utiliser les touches fléchées pour se déplacer et donc n’apprennent rien hjkl, n’ont donc pas la chance de voir si cela est préférable.

Personnellement, après avoir acquis une certaine familiarité avec vim, j’ai désactivé les touches fléchées pendant un certain temps pour bien les maîtriser, hjklpuis les a réactivées plus tard pour simplifier mon travail .vimrc. La sagesse conventionnelle tient dans mon cas; une fois que j'ai su utiliser les deux hjkltouches de direction et les flèches, je me suis retrouvé presque exclusivement à utiliser les anciennes.

Patrick Sanan
la source
6
Je ne suis pas d'accord. Comme le dit ce blog , cette approche "tout ou rien" pour les débutants aide à créer la réputation de "non-aimable pour les utilisateurs" de vim. Les nouveaux utilisateurs commencent, s’enlisent et sont submergés et concluent (ce qui n’est pas surprenant) que vim est un gâchis impie et qu’ils retournent à un éditeur où ils peuvent être décemment productifs. - Si vous apprenez à nager, vous ne vous jetez pas du bateau dans l'océan. Il est tout à fait acceptable de promener votre chien dans la piscine pour enfants jusqu'à ce que vous vous sentiez à l'aise avec l'eau.
RM
2
... ne veut pas dire que la désactivation des touches fléchées ne fonctionnera pas pour les gens. Mais c’est une étape "J'aime vim et veux apprendre à mieux l’utiliser", pas une étape "Je suis nouveau dans vim et je veux apprendre à l’utiliser".
RM
5

La réponse habituelle implique l'efficacité. Vous avez probablement été formé au fil des ans à la dactylographie, qui vous permet de garder la main sur asdf et jkl;. Une grande majorité des raccourcis clavier dans Vi sont conçus autour de ce fait, y compris les commandes de mouvement hjkl.

Personnellement, j'utilise les deux. J'utilise hjkl lorsque je modifie activement de grandes sections de texte, ainsi que les touches fléchées pour faire défiler les fichiers journaux (et |, g et / lorsque je modifie ponctuellement un fichier). C'est ce qui me convient le mieux, et dans un cas comme celui-ci, c'est ce qui compte vraiment.

Austin Hemmelgarn
la source
2

Il y a longtemps, de nombreux terminaux ne possédaient pas de touches fléchées ou ne les possédaient pas tous les quatre. Les systèmes logiciels nécessitant une navigation fournissaient normalement une sorte d’approche de navigation sans utiliser les touches de direction, et hjkl de vi est un exemple canonique. (Un autre exemple classique est le logiciel ^ E- ^ S- ^ X- ^ D de WordStar.) À mesure que l'utilitaire de navigation au clavier devenait de plus en plus évident, de plus en plus de nouveaux terminaux commençaient à être dotés de touches fléchées, et les systèmes logiciels les associaient souvent aux anciennes la navigation. Cependant, cela posait un problème de transférabilité: si les enfants formés dans les écoles devaient désormais compter sur une fonction aussi sophistiquée que les touches fléchées, il était possible qu'ils ne puissent pas être productifs avec - une fois commun - claviers sans touches fléchées.

Ainsi, les enseignants des cours d'initiation à l'informatique de base ont commencé à conseiller avec prudence aux étudiants d'apprendre à utiliser le plus petit dénominateur commun afin d'optimiser leur employabilité. Et cette pratique a longtemps résisté à toutes les raisons qu’elle aurait pu avoir auparavant.

Dans les implémentations modernes de vi, la principale raison de préférer hjkl est qu’il est légèrement plus rapide d’utiliser les touches déjà sous la main que de déplacer celle-ci à l’endroit où se trouvent vos touches de direction. Éviter le changement de contexte de votre main a bien sûr l'inconvénient de devoir effectuer un changement de contexte de vi. De nos jours, lorsque la vitesse de frappe est très précieuse pour les humains, que vous choisissiez l’une ou l’autre est plutôt une question de préférence personnelle, et il n’ya plus rien de mal en soi à utiliser les touches fléchées, le cas échéant.

creuser
la source