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 ?

6voto

Kaz Points 2554

En ce qui concerne la deuxième question :

[Si vous n'utilisez pas les touches fléchées, comment pouvez-vous déplacer le curseur en mode insertion ?

Pour celui qui est maître, et qui dédaigne donc les touches fléchées, le concept de "mode" n'existe pas non plus.

Le maître ajoute un nouveau texte en utilisant non pas un mode d'insertion, mais plutôt une insertion ou un remplacement complet. commandes qui commencent par un opcode tel que i , o o cw qui est suivie par le texte de la charge utile, et terminée par ESC . Les commandes ont une syntaxe, et donc la machine passe par des états en acceptant la syntaxe des commandes, mais dans le modèle de l'éditeur du maître, celles-ci ne donnent pas lieu à un mode. Ce que les apprentis appellent naïvement "mode", est pour le maître un état de commande inachevé, une situation des plus détestables que le maître évite.

Lorsque le maître s'aperçoit, au milieu d'une commande d'insertion ou de remplacement, que le texte doit être inséré ou supprimé ailleurs qu'à la prochaine position de caractère indiquée par le curseur, il met fin à la commande d'insertion et déclenche l'une des dizaines de commandes de déplacement efficaces (en recourant à l'infime hjkl si un moyen plus puissant n'est pas manifestement applicable).

De plus, comme le maître est rarement distrait au point de laisser une commande inachevée, il est rare, voire impossible, que l'éditeur émette un bip en raison de la saisie d'une commande superflue. ESC émis "au cas où".

(Cependant, lorsque le réseau est en retard ou que la machine est embourbée, les fourrières maîtres sur le ESC touche furieusement et à plusieurs reprises, comme tout le monde).

5voto

Squeezy Points 8182
  • les touches fléchées peuvent ne pas fonctionner correctement dans certains environnements. hjkl sont des caractères normaux et bien compris par tous les types de terminaux.
  • Vous ne déplacez pas le curseur dans Mode insertion (sauf pour Retour en arrière et la correction d'une petite coquille), l'idée de vi est d'entrer Mode insertion seulement pour entrer dans quelque chose. Le mouvement se fait en Mode normal
  • Si vous le pouvez, vous devriez éviter d'utiliser hjkl pour se déplacer où que ce soit, et ne les utiliser que pour les directions. Il existe de nombreuses possibilités pour déménager dans vi voir : http://vim.wikia.com/wiki/Moving_around

4voto

kmort Points 1701

Oui, pour plusieurs des raisons mentionnées ci-dessus, vi a été écrit à l'origine pour utiliser hjkl mais " jamais "C'est une déclaration assez importante.

J'ai tendance à modifier vim (et les autres outils que j'utilise) pour qu'ils se comportent comme je le souhaite. Cela fonctionne très bien sur ma machine, mais en tant que développeur embarqué, je ne peux pas toujours choisir ce qui se trouve sur les machines que je supporte. Je rencontre des machines plus anciennes qui n'ont que hjkl la navigation dans vi à l'occasion. Je finis par obtenir les codes de contrôle insérés dans mon fichier pendant une seconde ou deux, jusqu'à ce que je reprenne l'habitude et que je passe à hjkl .

La seule raison valable que je puisse trouver pour "ne jamais utiliser les touches fléchées dans Vim !" est de pouvoir utiliser des machines qui ne peuvent pas gérer les touches fléchées. Cela semble être une raison bien mince pour dire " jamais ."

4voto

Conrad.Dean Points 838

si vous n'utilisez pas les touches fléchées, comment pouvez-vous déplacer le curseur en mode insertion ?

La raison principale pour laquelle je décourage les gens d'utiliser les touches fléchées est explicitement porque il vous permet de vous déplacer en mode insertion.

L'un des problèmes les plus étranges de l'apprentissage de vim pour les nouveaux arrivants est que la commande undo de vim fonctionne en annulant le dernier action et non le dernier. frappe au clavier . Beaucoup de mes amis finissent par rester en mode insertion tout le temps parce qu'il n'y a jamais de raison de le quitter. Quand ils me demandent "Comment annuler ?". Je leur réponds "appuyez sur la lettre u en mode commande" et ils sont frustrés lorsque vim efface tout le fichier.

"Vim est un éditeur de texte assez inutile s'il ne peut pas défaire les choses correctement."

Il est difficile d'utiliser un outil avant de l'avoir appris.

Vim ne devient utile qu'une fois que vous avez appris à l'utiliser. La puissance de vim réside dans la façon dont vous pouvez lui dire "refaire cette chose" ou "défaire cette chose" ou "faire cette chose uniquement lorsque j'appuie sur cette touche de raccourci macro" grâce à une mémoire musculaire subconsciente. Si "cette chose" devient "taper le fichier entier du début à la fin", je suis d'accord, vim n'est pas du tout utile.

C'est pour cette raison que vous ne devez saisir du texte que lorsque vous êtes dans la section insert mode . Éviter les touches fléchées n'est qu'un des moyens que nous avons trouvés pour vous aider à devenir un meilleur utilisateur de vim, plus rapidement.

1voto

David E. Points 51

Voici mes deux cents.

Faites ce qui vous convient. Si vous utilisez différents éditeurs, il peut être plus facile d'utiliser les touches fléchées pour plus de cohérence.

D'autre part, il est absolument génial que vi (et vim) n'aient pas besoin de touches spéciales, sauf peut-être . Vous pourriez probablement pirater une vieille selectric IBM pour qu'elle fonctionne comme un terminal.

L'autre chose à laquelle il faut faire attention est que les touches fléchées peuvent ne pas fonctionner comme prévu. J'ai utilisé des terminaux où elles ne fonctionnaient pas. Je ne sais pas exactement comment elles sont implémentées dans Vim, mais je suis sûr que ce n'est pas uniforme. Ma mémoire défaillante semble même se souvenir d'une implémentation où elles étaient implémentées comme des macros Vim.

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