Lancement de Vim Racer
(vim-racer.com)- Vim Racer est un jeu en ligne où l’on atteint rapidement des cibles dans un texte à l’aide des commandes de déplacement de Vim, afin de s’entraîner sous forme de compétition chronométrée à la maîtrise de ces commandes
- À chaque cible atteinte, la suivante apparaît, et l’on enchaîne une course de 12 cibles en combinant des commandes de déplacement Vim comme
wou3j - En activant le réglage relative lines, il devient plus facile de s’entraîner aux déplacements basés sur les numéros de ligne relatifs, ce qui aide à réduire la saisie de longs numéros de ligne absolus dans les gros fichiers
- Le classement refuse les temps inférieurs à 1 seconde afin de mesurer la navigation manuelle, et le changement de nom d’utilisateur est limité à une fois par heure
- Il est possible de voir les frappes des meilleurs scores et des conseils par course, ce qui en fait non seulement un jeu, mais aussi une ressource d’apprentissage des déplacements Vim
Jeu de vitesse autour des commandes de déplacement Vim
- L’objectif de Vim Racer est d’atteindre toutes les cibles le plus vite possible
- Lorsqu’une cible est atteinte, la suivante apparaît
- Les cibles sont affichées sous la forme
A - Toutes les commandes de déplacement de Vim peuvent être utilisées, et les meilleurs temps dépendent donc fortement du choix des commandes les plus efficaces
- Pour démarrer une course, il faut cliquer sur reset
- Après le clic, le focus du navigateur passe à l’éditeur, ce qui permet d’utiliser immédiatement des commandes de déplacement Vim comme
w
- Après le clic, le focus du navigateur passe à l’éditeur, ce qui permet d’utiliser immédiatement des commandes de déplacement Vim comme
- L’écran actuel affiche
Race Level: 12 Targets (Burn Detector),Race Mode: Standard,Navigations: 0/12 - Les retours sont recueillis via la communauté Reddit
Réglages et contraintes d’exploitation
- relative lines peut être activé dans les paramètres via l’icône en forme d’engrenage en haut à gauche de l’éditeur
- C’est utile si l’on préfère saisir un nombre de déplacements relatifs avant la commande, comme
3j - Dans un gros fichier, cela peut être plus rapide que de saisir
1230gg - Un exemple de configuration locale consiste à afficher le numéro de ligne absolu uniquement sur la ligne du curseur, et des numéros de ligne relatifs pour toutes les autres
- C’est utile si l’on préfère saisir un nombre de déplacements relatifs avant la commande, comme
- Les dons servent actuellement à financer la mise à niveau du serveur vim-racer et de la base de données
- La base de données actuelle est DynamoDB
- DynamoDB est pratique avec son offre gratuite pour lancer un petit site, mais impose des limites fonctionnelles au détriment du rapport coût-efficacité
- L’objectif principal actuel est une migration vers une base de données SQL, et le coût de la plus petite instance est d’environ 100 dollars par an
- Les dons précédents sont réinvestis dans les revenus récurrents de vim-racer
- Le premier donateur est ThePrimeagen
Classement et usage pédagogique
- Le classement refuse les temps inférieurs à 1 seconde
- L’utilisateur
howmontre que des temps inférieurs à 2 secondes peuvent aussi être légitimes - Le jeu cherche à mesurer à quel point l’utilisateur sait naviguer manuellement dans le texte
- Les temps
<20msmontrent une maîtrise de Vim, mais ne correspondent pas à l’objectif du jeu - À l’avenir, il pourrait y avoir non seulement des variations de cibles, mais aussi d’autres types de jeux ou des classements capped/uncapped
- Pour l’instant, les ressources de développement étant limitées, la direction retenue est de ne laisser au classement que les scores obtenus par navigation pure
- L’utilisateur
- Le nom d’utilisateur ne peut être modifié qu’une fois par heure, sans création de compte complète
- Cette limite vise à éviter que le classement ne soit rempli de manière excessive
- Vim Racer peut aussi servir à l’apprentissage des déplacements Vim
- Chaque type de course fournit des conseils pour apprendre les itinéraires les plus efficaces vers les cibles
- Chaque entrée du classement inclut les frappes utilisées par les meilleurs scores
- Les utilisateurs peuvent analyser ces séquences de touches pour apprendre de nouvelles commandes de déplacement Vim et améliorer leur navigation
1 commentaires
Avis sur Hacker News
Je suis entré dans le classement du niveau jpeg avec 17 secondes, et c’était vraiment amusant comme jeu compétitif.
J’ai joué en me déplaçant instinctivement vers la position demandée, sans optimisation, et c’était quand même plaisant ; en particulier, la fonction qui montre le déroulé des déplacements des parties du classement semble aussi utile comme support d’apprentissage.
Cela dit, il y a un score d’une seconde tout en haut, soit moins de 0,05 seconde par déplacement, ce qui ne paraît pas humainement possible. On dirait qu’ils utilisent des entrées scriptées, et comme ce sera difficile à empêcher dans cette interface, classer les joueurs au nombre de frappes plutôt qu’au temps écoulé ferait monter non pas le plus rapide, mais le plus efficace, et rendrait aussi la triche par script moins pertinente.
%. Même en m’y prenant maladroitement, je suis descendu à 6,5 secondes.Vraiment excellent.
Ce serait bien d’avoir un mode qui consiste à minimiser le nombre de frappes plutôt que la vitesse. La compétition porterait alors sur une solution optimisée façon Vim golf, et non sur du martelage rapide de hjkl.
Petit bug : dans le classement, le caractère
`s’affiche comme « Unsupported ». C’est particulièrement visible quand on suit un Duff's device qui utilise des marques.C’est probablement géré via une liste d’autorisation, donc il devrait suffire de l’y ajouter.
Un jeu impossible à arrêter une fois commencé.
:q.Vraiment amusant. Je me demande si vous connaissez d’autres jeux Vim de ce genre.
J’ai toujours voulu utiliser Vim, mais comme j’utilise le mode evil d’Emacs, je ne suis pas encore rapide.
Le site semble cassé quelque part. Quoi que je fasse, rien ne réagit ; j’ai essayé avec Chrome et Firefox.
Avant, la bascule se faisait en douceur, mais maintenant je dois invalider le cache manuellement. Cela semble n’arriver que sur certains déploiements.
Vraiment chouette. En revanche, à une étape avancée, j’ai supprimé une ligne que le programme devait viser plus tard, et ça a provoqué un crash.
Merci quand même de l’avoir signalé, ça aide à prioriser.
La possibilité de voir via le classement comment les autres s’y sont pris est très utile.
J’aimerais essayer, mais les numéros de ligne suivent le curseur. Ça ressemble à un bug ; est-ce que j’ai raté quelque chose ? Je n’ai pas beaucoup utilisé Vim, mais normalement je peux au moins me déplacer, même lentement.
J’ai essayé avec Chrome et Firefox.
Vos retours ont fait remonter la priorité de ce changement.
set rnuC’est vraiment pratique pour les déplacements relatifs comme
5jou12k:)Amusant. Ce serait excellent d’ajouter un affichage du nombre de frappes, ainsi qu’un mode où il faut minimiser le nombre de frappes plutôt qu’aller plus vite.
Ce serait bien aussi que la description du jeu explique plus clairement ce qu’est la « target ».
Pour le nombre de frappes, j’hésite. Je veux vraiment que ce jeu soit centré sur la vitesse. VimGolf couvre déjà très bien ce genre de puzzles et de scénarios, et ici la différence, c’est la vitesse.
En revanche, j’aimerais analyser les données de frappes. Par exemple, on pourrait découvrir que
wwwest plus rapide quef. Mon hypothèse initiale était que chercher avecfetFn’était pas aussi efficace que des déplacements courants commew,e,h,j, mais elle semble déjà fausse. Cela dit, il faudra sans doute le formuler plutôt comme « une bonne partie du haut du classement utilisefetF», ce qui peut signifier qu’ils sont rapides, ou au moins que ces touches ne pénalisent pas beaucoup.Même si ce n’est pas la même chose que la vitesse pure, cela contribue au confort d’utilisation par rapport à d’autres éditeurs, et c’est très important dans l’expérience de frappe.
C’est un jeu nul, mais il montre bien une chose : se déplacer dans Vim sans Easymotion, c’est comme faire une course à pied au lieu d’utiliser une voiture de course.