145 votes

Pourquoi les touches fléchées ne sont pas recommandées dans Vim

"Ne jamais utiliser les touches fléchées dans Vim !"

C'est ce que j'ai entendu de la bouche d'un orateur inconnu, mais je n'ai pas eu l'occasion de lui demander pourquoi. De même, si vous n'utilisez pas les touches fléchées, comment pouvez-vous déplacer le curseur dans la fenêtre Insérer mode ?

191voto

pd12 Points 1209

L'utilisation des touches fléchées est considérée comme une mauvaise habitude, car si vous utilisez les touches fléchées, vous ratez probablement de nombreuses fonctionnalités de vim.

Lorsque les gens commencent à utiliser vim, ils ont tendance à rester en mode insertion car cela ressemble plus à l'édition de texte conventionnelle. Cependant, pour être efficace dans vim, vous ne devez être en mode insertion que lorsque vous saisissez réellement du texte. Si vous voulez déplacer le curseur, vous devez être en mode normal. Vous devriez être en mode normal par défaut.

En mode normal, il existe un million de raccourcis pour se déplacer. Vous pouvez utiliser hjkl pour vous déplacer d'un espace à l'autre, ou vous pouvez vous déplacer par mots, paragraphes et ainsi de suite. Si vous êtes en mode normal, il est inutile d'utiliser les touches fléchées au lieu de la touche hjkl puisqu'ils sont plus éloignés.

Il existe une attitude selon laquelle si vous utilisez les touches fléchées, vous utilisez vim "mal". La vérité est que vim a une courbe d'apprentissage vraiment très raide, alors pendant que vous apprenez, faites ce qui vous permet de rester sain d'esprit. Lorsque j'ai commencé à utiliser vim, je faisais tout de la "mauvaise" façon et je n'ai eu aucun problème à me défaire de mes habitudes une fois que j'ai appris plus de commandes de vim.

À titre d'exemple, lorsque j'ai commencé, disons que je voulais modifier le texte entre guillemets :

String mystring = "I want to change this";

Je passais en mode insertion, je me déplaçais jusqu'à la fin de la chaîne de caractères à l'aide des touches fléchées, j'appuyais sur la touche de retour arrière jusqu'à ce que la chaîne de caractères ait disparu, puis je saisissais le nouveau texte.

Une meilleure méthode consiste à placer votre curseur n'importe où dans la chaîne (mode normal), puis à appuyer sur ci" . Cela permettra change in " . Il supprimera tout ce qui se trouve entre les guillemets et vous mettra en mode insertion pour que je puisse saisir le nouveau texte.

102voto

Christian Stewart Points 697

Placement des clés

En bref, Vim utilise le hjkl comme interface de navigation est un vestige de l'ancien terminal "ADM-3A", qui avait ces touches marquées de flèches.

Keyboard

Depuis vim est dérivé de vi il utilise les mêmes clés hjkl.

Nouvelles habitudes

Le remplacement des touches fléchées par des lettres vous permet de naviguer dans le texte sans retirer vos mains de la configuration de frappe standard . Cette méthode est sans doute plus efficace et plus rapide que de bouger la main pour frapper les touches fléchées. Comme indiqué dans la référence n° 2 (voir les ressources), ce n'est pas la fin des avantages de cette méthode : VIM dispose d'un grand nombre d'autres raccourcis auxquels vous pouvez accéder sans bouger vos mains.

Ressources et mode d'insertion

Il existe quelques réponses très détaillées et précises aux 2 parties de votre question : en ce qui concerne le remplacement de la clé fléchée, j'ai répondu de manière rapide et sommaire, cependant pour votre question d'insertion veuillez consulter les ressources énumérées ci-dessous.

19voto

nan Points 1103

D'autres ont décrit les raisons pour lesquelles d'autres moyens de déplacer le curseur sont préférables, mais peu de choses ont été dites pour répondre à la question suivante : pourquoi l'utilisation des touches fléchées est-elle considérée comme une mauvaise idée ?

Je pense que la raison principale (et @Squeezy y a quelque peu fait allusion) est qu'à l'époque des terminaux comme le VT100, les touches fléchées ont produit une séquence d'échappement qui a été interprété par le programme en cours d'exécution. (Les touches fléchées n'étant pas représentées en ASCII, la saisie des touches fléchées doit être communiquée d'une manière "spéciale"). La séquence d'échappement était généralement quelque chose comme

ESC [ A

en fonction des propriétés de votre terminal, de votre connexion, et de votre mode curseur . Si votre Shell ou votre programme n'étaient pas configurés correctement pour le terminal, ils ne comprendraient pas la séquence d'échappement comme une touche fléchée.

Lorsque j'étais à l'université et que je me connectais à Ultrix via des terminaux VT100, si j'appuyais sur une flèche alors que j'étais dans vi en mode insertion, l'écran suivant apparaissait ESC serait interprété comme "sortir du mode d'insertion", et ensuite le suivant [ A ont été interprétées comme des commandes en mode normal. De toute évidence, ce n'est pas ce que l'utilisateur souhaite ou attend !

De nos jours, la gestion des terminaux et des touches fléchées semble être plus robuste, notamment dans les environnements GUI. Mais les mêmes problèmes surviennent toujours lorsque l'on utilise vim via SSH ou Telnet.

14voto

pdoherty926 Points 249

L'utilisation des touches fléchées est désapprouvée car elle vous oblige à déplacer vos doigts de la ligne d'accueil lorsque vous utilisez la disposition QWERTY et du pavé de caractères ( ?) lorsque vous utilisez Dvorak ou toute autre disposition.

10voto

ott-- Points 2091

Les touches fléchées posent un problème - il était déjà connu dans vi - sur les connexions lentes, comme sur un modem 1200 bauds. La flèche se traduit par une séquence ESC comme ESC a . Maintenant, lorsque le temps entre ESC et a devient trop long, vous finissez par entendre un BEL (ou voir un flash) suivi du mode append. Ceci n'apparaîtra pas avec le hjkl clés.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X