For all of the ciw examples, ce is easier since the cursor is at the first letter of the word.
Where dw works, this game teaches vlllld instead, which is a bad habit to teach.
Ctrl+A increments the first number after the cursor, which is easier than, say, f6r7 in cases where they do the same thing. Similarly, Ctrl+X decrements.
t:t: is weird when fY is much easier.
The Vim simulator has a minor difference compared to real Vim:
0
0
Start on line one and do CTRL-V then j then CTRL-A. Real Vim would increment both. The simulator only increments the one under the cursor.
I have considered getting into Vim a couple of times because it always seemed like the thing to do, but never did.
It does not make sense to me that I should use an editor I need to study and practice for. It can't possibly that much more efficient, especially given that usually speed is not the limiting factor for what I do.
Maybe one day I will be tempted to find out why it's supposedly worth it again.
Well consider this, if you end up liking Vim you'll almost certainly want to have Vim keybindings in everything you use. :)
I learned Vim because I didn't like using Nano to edit server configs, and ended up sticking with it because I wanted to ditch my mouse in my workflow for fear of long-term RSI development.
Vimtutor is a built-in command in Vim and Neovim, and I personally wish I started with it since it's super helpful. You only have to learn as much as you need to, to become productive and then you can progressively get more advanced with macros and piping the file contents to a command line tool like jq.
Edit: Lastly, vi(m) keybinds exist in a surprising number of GNU/Linux utilities and it's worhwhile to learn those at least, e.g. git's built-in pager uses a subset of vi(m) keybinds and so does `less`.
Does it make sense that you should use a keyboard you need to study and practice for? Because I'm willing to bet you didn't instantly learn touch typing the first time you laid eyes on a keyboard. I would also bet that you didn't know about ctrl c, ctrl v, ctrl x, multiple cursors, tab, and so many other things that you now take for granted in code editors and elsewhere. Vim is just like that - a little foreign in the start, but after using it for a while it becomes second nature. You can learn just the basics and be productive in a couple of days, then you have the rest of your life to learn the more advanced features like terminal mode or macros and so on. Though it seems most people (me included) get really excited about learning vim once we get into it, and start sprinting through a bunch of features. That can make it seem a bit overwhelming.
For me, it's about comfort. No need to bounce my right hand between the home row, the arrow keys and the mouse. No need to stretch my left pinky to Ctrl and Shift for every shortcut. Everything is near the home row in Vim, by design.
And I'd add language. With vim, you can hardwire your brain to your keyboard / editor, and use some sort of language to almost unconsciously express what you want to do. Like edit a typo, move a work, move a paragraph, capitalize this, etc.
Without vim, your language is limited to very basic actions that you need to repeat ad nauseam.
> especially given that usually speed is not the limiting factor for what I do.
For me it’s not so much about speed as about comfort. Jumping into VISUAL and selecting something in a block, yanking the line, jumping pages, editors, searching within the file, filtering, sorting.
And the most important part is that because it is so old and widespread there’s pretty much vim mode for any editor so I can use the same shortcuts between vim, VScode, IntelliJ, etc.
The real strength of vim (and emacs, though I haven't learned emacs to know this firsthand) is the expressivity of it rather than the raw speed. When you can express an edit as a sequence of key presses, you can record and replay that to easily and make the "same edit" in many places.
The funniest time I did this was with a interview screening question which had a hundred-deep chain of links with the URL for the next link embedded in some JSON with some additional formatting required to get a working link. Vim let me copy a line of text that's a curl command, shell out to replace it with the ~6 lines of JSON response, edit that as a string down to a curl command to the next URL, and wrap that entire process up as a macro to run a hundred times.
As a vim and emacs user, macros are really nice. But the true superpower, IMO, is that code is fairly structural in the file and outside of it, and both allow me to quickly navigate that structure. Vim is more powerful on the edit side, but emacs has more convenient utilities.
I still vividly remember a peer watching me carefully record a vim macro, thinking I was just editing. Right as he said "Why are you so slow?!?", I ran `100@q` to apply the edit to the whole file. Just "oh." after that.
I felt the same and never got into vim. What clicked for me however is helix and I love it. Brings everything out of the box and the mental model fits me better (select, then action).
I did the first challenge or exercise, but I was honestly a little surprised that Vim motions aren't able to be used to choose the next exercise(s) in the sidebar that becomes visible. That could potentially be something that the player unlocks later on as well.
I was somewhat irritated that the exercises allow you to stay in insert mode at the end. I think it might do better at teaching the concept of an "edit" as a single, repeatable action by requiring you to go back to normal mode.
very cool! one feedback - when i selected all skills the game started with all the options of "fix a typo" first - i would like a version where all the challenges are jumbled up.
also there is an opportunity to turn this into something like vim.golf but in the browser
Agreed, it would be nicer if the whole cell were clickable. I’ll work on this. I also recommend to use hjkl to navigate and Space to select. I think that’s more fun :).
vim use is whats reliably helped me to remember vim commands. a bonus is I can use the same tactic for all other software and in many other domains where I'd like to keep related skills fresh in mind, at figurative fingertips
For all of the ciw examples, ce is easier since the cursor is at the first letter of the word.
Where dw works, this game teaches vlllld instead, which is a bad habit to teach.
Ctrl+A increments the first number after the cursor, which is easier than, say, f6r7 in cases where they do the same thing. Similarly, Ctrl+X decrements.
t:t: is weird when fY is much easier.
The Vim simulator has a minor difference compared to real Vim:
Start on line one and do CTRL-V then j then CTRL-A. Real Vim would increment both. The simulator only increments the one under the cursor.I learned the basics a couple of years ago and although Claude does most of my work now, I'll try it to learn some new tricks. Thanks for posting!
Claude has a vim input setting!
I have considered getting into Vim a couple of times because it always seemed like the thing to do, but never did.
It does not make sense to me that I should use an editor I need to study and practice for. It can't possibly that much more efficient, especially given that usually speed is not the limiting factor for what I do.
Maybe one day I will be tempted to find out why it's supposedly worth it again.
Well consider this, if you end up liking Vim you'll almost certainly want to have Vim keybindings in everything you use. :)
I learned Vim because I didn't like using Nano to edit server configs, and ended up sticking with it because I wanted to ditch my mouse in my workflow for fear of long-term RSI development.
Vimtutor is a built-in command in Vim and Neovim, and I personally wish I started with it since it's super helpful. You only have to learn as much as you need to, to become productive and then you can progressively get more advanced with macros and piping the file contents to a command line tool like jq.
Edit: Lastly, vi(m) keybinds exist in a surprising number of GNU/Linux utilities and it's worhwhile to learn those at least, e.g. git's built-in pager uses a subset of vi(m) keybinds and so does `less`.
Does it make sense that you should use a keyboard you need to study and practice for? Because I'm willing to bet you didn't instantly learn touch typing the first time you laid eyes on a keyboard. I would also bet that you didn't know about ctrl c, ctrl v, ctrl x, multiple cursors, tab, and so many other things that you now take for granted in code editors and elsewhere. Vim is just like that - a little foreign in the start, but after using it for a while it becomes second nature. You can learn just the basics and be productive in a couple of days, then you have the rest of your life to learn the more advanced features like terminal mode or macros and so on. Though it seems most people (me included) get really excited about learning vim once we get into it, and start sprinting through a bunch of features. That can make it seem a bit overwhelming.
For me, it's about comfort. No need to bounce my right hand between the home row, the arrow keys and the mouse. No need to stretch my left pinky to Ctrl and Shift for every shortcut. Everything is near the home row in Vim, by design.
Comfort and reducing context switching overhead. Targeting a specific screen area with the mouse just takes way too much attention.
And I'd add language. With vim, you can hardwire your brain to your keyboard / editor, and use some sort of language to almost unconsciously express what you want to do. Like edit a typo, move a work, move a paragraph, capitalize this, etc.
Without vim, your language is limited to very basic actions that you need to repeat ad nauseam.
> It can't possibly that much more efficient,
It is. And I’m not even an advanced Vim user.
> especially given that usually speed is not the limiting factor for what I do.
For me it’s not so much about speed as about comfort. Jumping into VISUAL and selecting something in a block, yanking the line, jumping pages, editors, searching within the file, filtering, sorting. And the most important part is that because it is so old and widespread there’s pretty much vim mode for any editor so I can use the same shortcuts between vim, VScode, IntelliJ, etc.
The real strength of vim (and emacs, though I haven't learned emacs to know this firsthand) is the expressivity of it rather than the raw speed. When you can express an edit as a sequence of key presses, you can record and replay that to easily and make the "same edit" in many places.
The funniest time I did this was with a interview screening question which had a hundred-deep chain of links with the URL for the next link embedded in some JSON with some additional formatting required to get a working link. Vim let me copy a line of text that's a curl command, shell out to replace it with the ~6 lines of JSON response, edit that as a string down to a curl command to the next URL, and wrap that entire process up as a macro to run a hundred times.
As a vim and emacs user, macros are really nice. But the true superpower, IMO, is that code is fairly structural in the file and outside of it, and both allow me to quickly navigate that structure. Vim is more powerful on the edit side, but emacs has more convenient utilities.
I still vividly remember a peer watching me carefully record a vim macro, thinking I was just editing. Right as he said "Why are you so slow?!?", I ran `100@q` to apply the edit to the whole file. Just "oh." after that.
I felt the same and never got into vim. What clicked for me however is helix and I love it. Brings everything out of the box and the mental model fits me better (select, then action).
https://helix-editor.com/
(a) vim is super powerful (b) vim is way faster to edit, navigate, etc (c) it really doesn't matter that much
do the thing you enjoy :)
I did the first challenge or exercise, but I was honestly a little surprised that Vim motions aren't able to be used to choose the next exercise(s) in the sidebar that becomes visible. That could potentially be something that the player unlocks later on as well.
Good idea! I will work on this.
I was somewhat irritated that the exercises allow you to stay in insert mode at the end. I think it might do better at teaching the concept of an "edit" as a single, repeatable action by requiring you to go back to normal mode.
I tried and finally I will learn and understand Vim better playing a game :) Thanks!
This is great, definitely going to be using this to practice!
One note: It might be useful to keep the "undo" prompt when the user messes up after the first two prompted lessons for a clear recovery path.
Thank you for making this!
Thanks for the suggestion! I will add that in.
This got a laugh out of me. I guess I practiced vim commands in the most boring way - by using vim.
The best game to learn hjkl movement will always be nethack :)
very cool! one feedback - when i selected all skills the game started with all the options of "fix a typo" first - i would like a version where all the challenges are jumbled up.
also there is an opportunity to turn this into something like vim.golf but in the browser
Cool, this could be a big help for those just starting out!
This unlocked the memory of when I first used vimtutor and discovered the beautiful world of vim, that was also a great resource
the marker "ma" exercises are a bit confusing since you do make a marker but in most cases you don't have to go back to make a change to that marker
Cool, a small ux issue I noticed is that the grid cells are not clickable as a whole.
Agreed, it would be nicer if the whole cell were clickable. I’ll work on this. I also recommend to use hjkl to navigate and Space to select. I think that’s more fun :).
Very annoyed I cannot operate the website with the keyboard, have to do the practices then use my mouse.
vim use is whats reliably helped me to remember vim commands. a bonus is I can use the same tactic for all other software and in many other domains where I'd like to keep related skills fresh in mind, at figurative fingertips
oh man this is great. thank you!
Thanks for trying it out!
[flagged]
[flagged]