Show HN: I built an online interactive course that helps you learn Vim faster
vim.so
vim.so
For me, the bottleneck to picking up vim has not been merely knowing the hotkeys, but more internalizing the commands and building muscle memory.
The interactive game format of this website could possibly solve that, so it appeals to me.
> It is important to remember that this tutor is set up to teach by use. That means that you need to execute the commands to learn them properly. If you only read the text, you will forget the commands!
And it's free, not 15 USD or whatever this site is charging.
is provided by vimtutor. I wish people would take a couple hundred milliseconds to research things like this before posting about them — most [GNU’s Not] Unix commands take less time to run than a webpage takes to load, and installing their packages takes no more typing than a web search.
Have tried vimtutor twice. It is seriously confusing if you don't use US keyboard layout and there are probably a couple of other sources of confusion as well.
I did well at school, I do well at work but not so well at vimtutor.
So I think I'm kind of qualified to say that there's room for other resources besides vimtutor.
Also the way you write it is kind of rude.
Also vimtutor requires you to actually use the commands on the document. I don't think there is a single key press it doesn't explicitly tell you to press.
Maybe do a quick run through so you can give an example of a place that is confusing?
On the multiuser Unix systems at Purdue, it was typical to have at least half a dozen people on the server, with explosions going off like fireworks. We ran the mod where you could collect 200 ammunition for the nuke, which would destroy a third of the screen.
https://man.openbsd.org/OpenBSD-current/man6/hunt.6
We also had Larry Wall's (yes, that one) video game Warp, which was a lot more action-oriented than the original Star Trek video game. It also used the same hjkl movement keys.
http://ftpmirror.your.org/pub/misc/unixarchive/PDP-11/Trees/...
And of course there was Rogue and Nethack, but those are a lot better remembered these days.
Also, you exit by pressing ESC and then typing :q (hit enter)
But there's actually nothing special about vimtutor here: all it does is write a temporary file and then open it in vim.
I remember my first vi sessions (typically via something like `crontab -e` where it wasn't clear to me it picked my "default" editor ... thus didn't know where to read up on it ...) some long time ago, where i knew `kill` before the right command ...
I don't understand how some people can say the learning curve is too steep. Sure it's a bit annoying at first, but it quickly becomes natural, and you don't have to use all features at first. It has allowed me to improve my touch typing a lot. Learning a programming language is a lot more work but hardly anyone ever complain about it.
It's been maybe two months and I wouldn't think of using anything else than vim for serious code editing.
I am doing fine with vim for basic editing tasks and use it a lot (mostly when I'm already in the command line). But there's just only so many shortcuts I'm capable of memorizing. This is not a problem for me exclusive to vim, of course. In IntelliJ I also sometimes find an amazing new function that I then don't keep using since I've already exhausted my limited "inclination" of learning new shortcuts. Also, I don't think my productivity gains at this point are going to come from faster input anyway. Sorry, vim, it's not you, it's me.
When you finally become competent, it is an absolute joy to work with. It makes me think about editing in a totally different way. However the road to get to that point is not fun.
I started out with basic tasks in the terminal, & vimtutor reps. Then graduated to using a VS code plugin. I would turn it on for 10-15 minutes at a time a few times a day. Usually turning it off once I realize I wasn’t getting anything done :) But solid reps everyday over a few months and I got to where I learned more complex commands/ movements. Eventually I never needed to turn it off!
Then I began the configuration & plugin rabit-hole :)
Do you ever miss the global commands not implemented in VS code's plug-in? I still do sometimes, like this: https://youtu.be/46Evprns18M
Yeah that's a good point. After a while you do start to realize the limitations of the VS Code plugin. That video is a good example. But once I got to where I could edit at equivalent speed I was used to, I dropped VS Code completely. I looked at the plugin as 'training wheels'.
I'm not as hardcore as some. I still prefer to use GVim/ Macvim. I'm not an 'everything must stay in the terminal' purist. I know some who are, but I still like being able to use the mouse to bail me out sometimes, and always have access to the system clipboard without having to recompile vim :)
I don't go crazy with config & plugins, but I got my setup to where I have all the features I missed from VS Code, and that's enough for me.
There is always more to learn though. I feel like I've been complacent lately, so you have to remind yourself sometimes to make an effort to seek out more advanced techniques.
That video is a great example of some of the incredibly powerful things Vim can do! I'm a big fan of macros for repetitive tasks.
This concludes the Vim Tutor. It was intended to give a brief overview of
the Vim editor, just enough to allow you to use the editor fairly easily.
It is far from complete as Vim has many many more commands. Read the user
manual next: ":help user-manual".Edit: question for Kenneth - do you plan on expanding the content?
I used it to get to grips with vim
https://catonmat.net/why-vim-uses-hjkl-as-arrow-keys
For a mostly data/SQL guy wanting to learn more about coding it still don't make much sense but at least I know why and I can move on. When I was trying vimtutor in a CLI interface I was less curious and more WTF F... this is pure madness kind of mood.
Dunno if I'll subscribe but nice first experience through this demo.
Starting with deleting, yanking and pasting would be a lot more fun. Even navigation with gg and G plus numbers would be a lot more useful too. Like when you get an error message that is caused by line 42, you know why you want to use vim next time.
Still works pretty well, i've gotten used to it.
j and k being next to each other makes their relative motion sensible still. And the new positions of h and l keep them in the correct relative position to indicate left and right, but easier to use. The right index finger is already on h and the pinky needs to move up one key for l. And up/down is now the left hand, with right/left being on the right hand.
I've found emacs to be similarly more sensible and comfortable, using default key bindings, with Dvorak than Qwerty.
On the contrary... I'd say that if you are outside a browser, it is somewhat easier to have a browser window side by side and ALT-TAB between both. Having two tabs visible at the same time is a bit cumbersome.
Who cares? So nit. You could hotkey to switch between two windows of the same program.
Indeed, why? Using hjkl is about the worst way to move around in vim...
Though you may have been alluding to more powerful movements!
Another great resource I gotta plug is https://github.com/ThePrimeagen/vim-be-good. Essentially the same but it's a native vim plugin. It's free, doesn't require a login, and did I mention it's a native vim plugin?
I built this interactive course after a year of learning vim and finding it to be extremely useful in my day to day development experience.
The course is designed to give you lots of interactive practice so you can develop the muscle memory needed to effectively use vim.
Would love to hear what you guys think about it :)
There's also no mention of the slash '/' command, moving to a particular line number with 'Shift-G', 'dw' for deleting words, or any number of things that are essential to know if you want to use vim effectively.
I’m Kenneth Cassel. I think the confirmation should have gone to whatever email you use for google.
EDIT: with another browser, it seems to work, and it looks very cool! But I wonder, what is the interest of learning vim outside of vim? What are the advantages with respect to the similar tutorial "vimtutor" that comes with vim itself?
I use vim inside of vs code and it’s been awesome for my workflow.
vimtutor is a fantastic resource and I’d definitely recommend using it for anyone interested in learning vim.
vim.so gives you more interactive exercises and helps to show you real life examples of where and how vim would be useful.
Thanks for checking it out!
For some meta-advice: ignore all the salty comments in this thread... it must be a full moon
Separate modes for command & insert just feels inherently clumsy and slow to me. Is there some other killer feature that can't or hasn't been reproduced by modern editors?
- gqip to format (gq) a paragraph (ip).
- g?g? to ROT13 a line (doubling the operator makes it operate on the current line — in this case, g?? also works).
- y2w to copy (y) the next two words (2w) — this requires you to be at the start of the word, but you could use y2aw if you were in the middle of a word.
- dj to delete (d) two lines (j); see ":h linewise".
- dt. to delete (d) until a period (t.), not including the period.
- y% to copy (y) until the matching parentheses (%). If you aren't already on one, vim searches until a "(", which means that you can use this to copy a C-like function call.
Additionally, a subset of these operators and motions are available in plain vi, which is available on any POSIX system (Linux, macOS, *BSD, ...)
It should be possible to do this with a "regular" type of editor, where you have a keyboard shortcut to, for instance, select to the matching parentheses; there just aren't any editors (that I know of) with the same range of motions and operators as vim.
Not moving to the arrow keys or using ctrl-, alt- far outweighs the cost of switching between insert and normal mode.
From reading the rest of the replies, it sounds like the real answer is "because it's everywhere", which isn't really satisfying. I don't work on lots of machines that aren't my own (embedded/mobile space, which don't have vi installed!), so I don't actually encounter it everyday despite living on the command line.
Yes! I use mutt + vim. Composing emails in a textarea is a terrible experience by comparison. (Respect to emacs mail mode users, that’s a great option too.)
I also use w3m for browsing technical stuff, and use tmux for copy & paste into vim.
Wow, how does it work? Why y3aw doesn't fully work for 3 words (it captures space before the word I started with)?
2 words 1 spaces = 3 tokens 3 words 2 spaces = 5 tokens 4 words 3 spaces = 7 tokens ... maybe?
- 'I want to change the name of this variable. <cw> (Change Word)'
- 'I want to copy the contents of this braced block. <yi{> (Yank Inside Matching-braces)'
- 'I want to surround this word in parentheses. <vaws(> (Visual-mode (region selection) Around Word Surround-with Matching-parens)'
You get used to the separate modes fairly quickly. Your existing editor already works that way when switching between 'region' and 'insert' modes; it's just the command mode that throws people off initially. It's not that rough, especially if you have a reasonably placed key to return to command mode.
Holy shit, thank you. I've been looking for something like this for half a decade and never found it (I don't even know how I missed it!)
But there is nothing surrounding the word! I thought yank was for copying and pasting stuff. I can't understand why ysiwb works :(
They should not overload y for yank. Choose anything else that's not used.
Interesting, I have the opposite experience. In normal mode, I can do a lot using very few keystrokes. In editors without modes, there's always a lot of keyboard shortcuts which are difficult to remember and hard to execute.
Aside from just decades of experience in efficient editing of plain text files over slow connections plus all the modern stuff on top, I'd say text objects, which is one of the first things you learn about vim. And it's not a web browser.
What's more, as several other commenters have alluded to, vim thinks of editing as a language. There are verbs like cut or copy or paste, and there are nouns like [this] sentence or [this] word or one word backwards or from here until the letter j. Once you start building sentences of editing commands (e.g. copy from here to the 3rd next instance of the a line starting with 'Hello' namely <y3/^Hello>) the flexibility it offers is unparalleled. This is all done from your default context without fingers leaving the keyboard. Once you achieve fluency (admittedly not a trivial task) there is no context switching for any editing task, it becomes reflexive and subconscious.
Other stuff, like macros and registers, or easy access to regexes and ex commands help extend this, but the core reason why vim is still used today is this strength.
I'd highly recommend another classic response, given here, elaborating on the nature of vim as a language for editing: https://stackoverflow.com/questions/1218390/what-is-your-mos...
There are many advantages, however, clumsy and slow is a common reaction. From what I've seen, some people get so put off by the different way of editing that they struggle, they find vim a very slow way to do what they were doing before vim - character based editing, moving around with arrow keys, highlighting, inserting, and deleting maybe with some block commands for things like selecting a word or more by using the shift key or ctrl key. Maybe with the help of the mouse to highlight things and edit. The thing with vi/m is there is a language that allows you to do similar editing but has many many combo effects, once you understand how things combo together, all kinds of things can be done really quickly.
There's no real killer feature though, there's lots of cool features, one that often doesn't get mentioned much is that you can filter text through external programs, this combos with all the motion commands and other things, so very quickly you could write a snippet of markdown and change it into html by running it through pandoc, or write your own command line tools that do custom things, like querying things from your own apis / databases etc. Its powerful, because it combos with the rest of the vi/m language so you can use it in really creative ways.
I do primarily work on the command line and I can assign $EDITOR to anything I want. So what makes it so much more powerful than the plethora of other editors in the space?
If I ever have to write something nowadays without vim, everything feels clumsy and imprecise. If I want to go back a couple of words and change something, I feel like I’m playing a timing minigame. I have to hold the left arrow key exactly the right amount of time. Most of the time I overshoot a couple of characters, and have to tap the right arrow key to get to the right spot. Now repeat the same timing minigame holding backspace. Ah crap I deleted too much better undo a couple of times. Now I can finally make my change.
All of this is just unnecessary friction between your brain and the computer that anyone who hasn’t learned vim accepts as a fact of life, but it becomes completely intolerable after spending the time to learn.
There is no reason really, you either hear the call of the wild or you don’t and it’s perfectly fine if you prefer emacs, acme, nano or vscode.
The simple fact that the choice is so large is that people “click” in many interesting ways.
It's faster. I've been using vim motions for almost 9 years at this point, 8 years in vim, vi, ex-vi, neovim, etc. Most recently I've moved to Doom Emacs (Which feels like an editor I'll be using in whatever forms it takes, for the next 20+ years). The experience of when you get used to it is essentially that you are so practiced with the motions that they become sub-concsious, muscle-memory. I don't have to think about where to place the cursor, figure out where the mouse cursor is, deal with a bunch of weird pasting tricks. To delete a line I just have to will myself to delete it (using 'dd'), just like I don't have to think about the complex action of getting up off the bed, I just do it (At least, on days when Mr Depresso isn't visiting). Eventually, it feels like the editor is part of you. And at this point I can't give up vim motions. Editing in anything else is uncomfortable and painful because the ease and speed with which vim allows me to do complex motions and actions is so convenient.
I can't speak for your experience, but for me I had to struggle through it a bit until I found the 'ah-ha' -- that might not come for you, or maybe you haven't found it yet, unfortunately.
I would look into using more motions, don't see it as a replacement for Gedit, or Atom, or any of the mouse+keyboard text editors -- it's not. Trying to use it like those will lead nowhere.
The trick that worked for me is to find motions that are convenient, and move ESCAPE to a more palatable key -- I swapped it with CAPS LOCK, since I pretty much never, ever have to use that key (I can always highlight 2 words with `v2w` and press `~`, which will swap the case of it, anyway). The 'finding of the motions' is important. I spend 90% of my time in a text editor moving, and cutting text, rather than typing. A motion like `}` allows me to move the cursor down a paragraph, `d}` will delete said paragraph, `v}y` will copy it, etc. Often I find myself deleting `t`o a place. So I can do `dt#` to delete to the comment at the end of a line. ^O will go to my previous cursor position, etc.
I would also recommend looking up Practical Vim -- it's probably the best Vim handbook out there (Easily accessible via genlib if you want to try before you buy), and there are still things in there I haven't learned and integrated into my workflow yet (For example, `vi)` to fast-edit bracket sequences, that I haven't bothered with much).
---
Regardless of all of that you need to decide if that effort is worth it for you. I know an extremely skilled programmer who writes and deals with extremely complex code just using Gedit (previously Geany).
Will it help you program better? nope.
Will it help you be a better programmer? nope.
Like <esc>:5d doesn't delete line #5. I get "Not an editor command"
Edit: Looked into it, and it's using the Ace Editor[1] with vim key bindings. Which seems like an odd choice for a Vim tutor, since Ace doesn't really try to be a true Vim workalike.
You can even do "<esc>:e tutor" to run vimtutor. Also, "<esc>:export" does an http download of the current buffer contents.
edit: Note, I realize this isn't OP that I'm replying to. Not sure if what I wrote makes that clear.
Why is this better than vimtutor?
(That's up there with Haskell package management depending on "global variables" in a fixed settings file.)
But for beginners, I now recommend micro as a console text editor (https://github.com/zyedidia/micro). It's a one line install with all the shortcuts and display that have become a standard across editors.
I really don't get it. Vi is unintuitive and unfamiliar to unix newebies, but at some point every even half-competent person on unix could use it enough to at least do simple config file changes. Plus, if you took time to learn it properly, you actually knew a quite capable editor. And the beginner unfriendliness could presumably have been mostly fixed, without much cost to existing expert users. For example by defaulting to some helpful status message how look at help and insert text (and have cursor keys and Ctrl-S etc. work as "expected" in insert mode). Or maybe a message "press Ctrl-D to enter newbie mode" that experienced vimers could just ignore but would provide CUA style keybindings and modeless editing to everyone else.
Instead now everyone has to deal with a new (and for proficient users really quite worthless) editor with its own set of completely bizarre keybindings (not emacs, not readline, not vi, not CUA), but none of the upsides that come with emacs or vi's idiosyncracies. Ctrl-O to save? WTF? Literally the only advantage over vi is that it displays some instructions at the bottom, albeit not in a form any real newbie would understand at all.
Nano (and by extension this) feel like the worst of all possible worlds -- what am I missing?
If you use the box for more than 5 minutes a year, you'll probably change it to vim or whatever you prefer anyway.
For the rest, there is to me a cultural divide between a sysadmin/dev culture with abstract interfaces, specific key bindings and options, configuration files, ... and the thousands of people with various backgrounds that are learning tech today, including the console, just to do something using computers.
Micro is probably the best of both worlds. Try editing an admin file as a user and save.
It feels a tad unethical to be charging for a slightly more fancy, maybe kinda gamified, vimtutor. Like, just make a vim plugin that does this in vim and let that be your community donation.
But I suppose business is business eh.
There’s value in providing teaching on something that is free. I’ve bought learning tools/apps for many different programming related topics and loved the value they provided.
Making something paid vs. free can be the difference between it existing and not existing. I'd rather have this exist and be a paid app than not exist and be free.
0. Learn the basic movements and UI interactions. Do NOT use the arrow keys. Your future self will thank you tremendously.
1. Search DuckDuckGo for "vim cheatsheet" and find one that provides a good summary of commands thats organized to your liking.
2. Print it out and post it somewhere easily accessible to your working space.
3. Each-ish day, review the cheatsheet a bit and pick one one new kind of command that looks useful. Try to integrate that command into your workflow throughout the day. It'll be clumsy at first, but after you do it a few times you'll be surprised at how much faster this gets.
Focus on movement and editing first. Take note of sequences that seem to take a lot of work, as almost guaranteed there is a faster way you can integrate in later.
Once you've got a small core built up, do another review and research more specialized topics:
- .vimrc, colors, and customization
- plugins
- buffers, windows, etc for quick workspace organization
- macros ... and macros within macros!
- visual blocks
- various useful commands for advanced editing (e.g. regex based find in replace in an entire doc or visual block is epic)
Give yourself time and try not to be too loud when you have your first "A ha!" moment when you randomly try a completely new key combo that you think should work and it actually does exactly what you hoped.
I was pleasantly surprised that cw and D are implemented correctly though, so props on that!
AFAIK that's controlled by "set backspace=" and thus will vary based on one's .vimrc (or the system vimrc, installed by the package manager): https://stackoverflow.com/questions/18777705/vim-whats-the-d...
One can see the current value of the backspace setting via
<ESC>:echo &backspaceI was inspired by this newfound "using unexpected keys for navigation" discovery and found that (at least in my vim 8.2) holding down space in Normal mode similarly travels across the EOL boundary, just as backspace reverses that trend, so at least it's consistent
I'm pretty sure vanilla Vim doesn't do anything when pressing Tab in Normal mode - at least for me it certainly doesn't move the cursor.
I've been using vim as my daily driver via the intellij plugin for a few years. I mostly just navigate and never do anything complicated, it gets the job done.
For example I mostly use w, d, o, hjkl, y, p, w, b, t and recently discovered the `c+i` combo which is awesome.
But I feel like there's still a side of vim I haven't conquered.
Any tips?
The idea was that by forcing myself to write about Vim consistently, I would learn and absorb more and boy has it worked.
Never can seem to get vim selections and deletions right though, because it deletes the character after the cursor as well so the mouse comes clutch there.
- Playing some vimgolf and seeing what neat tricks people used. This is where I learned about “.”
- Going into the deep-end of just using vim (or just vim in IntelliJ without the mouse) will make you notice all the issues that make you unproductive with only vim e.g getting around with only hjkl is really slow so you might investigate other ways to navigate or deleting a word always involves getting to the end of the word and using lots of backspace may make you wonder if there are more efficient ways to do the same thing
- if you decide not to go into the deep-end, just being more picky about how much you’re spamming certain keys may help you gradually incorporate new commands into your flow
I would recommend using vim in the console without the mouse because your editor will always give you a way out of learning.
Every time you get stuck or feel inefficient, do a web search and learn one thing.
Learn to use and love :help.
I think a few plugins can really improve the experience such as coc, ultisnips, vim-surround. Also set some settings like relative number and highlighted yank.
Some other stuff to investigate... zz and scrolling, folding, G, macros, registers, f, $ and ^ and 0, %, }, ctrl-o, ctrl-] and ctags, formatting gq = etc
Edit: also remembered enable set hidden and use buffers and splits (eg :sbp). Use markers. Also I like the fzf plugin for quickly opening files etc.
Start with `:h user-manual` and go from there!
In addition to these, I've found (my personal experience, ymmv):
1) f/F to jump to next/previous occurrence of character to help navigating within a line very effectively, in conjunction with ; and , to jump around within these occurences. 2) use relative line numbers in conjunction with your hjkl.
E.g. jump up 5 lines and go to the start of a bracket is '5kf('. If it's a nested bracket you want, then '5kf(;'.
1. how to delete text inside a double quote and go to insert mode? - c+i+"
2. how to move to the end of line? - $
3. how to delete everything before "x" character and go insert mode" - c+t+x
...
EDIT: updated mistakes.
ciw will change inner word, ci" will change inside quotes
> 2. how to move to the end of line? - "g_"
$ is generally used as the noun object to represent "end of the current line"
> 3. how to delete everything before "x" character" - "ctx"
dtx would delete everything before the next x. ctx would delete and then put you in insert mode :)
The plugins are very worth it, there's no need to handicap yourself locally just so your environment matches some bare bones server config.
And regardless, the basic vim motions are always there - you don't lose much when just editing some config files on a server even if you have to use vanilla vim
Except vim. No plugins into vim. That is sacrilege.
I was hoping to kick the can on learning vim macros down the road, and so here we go...
I need to add some better copy and examples on the landing page so people will know what they're getting.
Here's a video on twitter that demonstrates one of the exercises https://twitter.com/KennethCassel/status/1351178904686514178...
As an emacs user it's frustrating having to install emacs to do some config editing whereas in my experience vim is included everywhere. e.g. my router.
I know the lack of availability of .com/other common TLDs is a problem. I understand the reasoning behind using .io to represent software/saas startups (stands for inputs/outputs). I don't understand .so though. From what I remember, Notion was probably the first high profile startup using it, and it just kinda took off. Searching "why .so domain" comes up with nothing except a Reddit thread with the Notion founder saying it was mostly because it was just an available TLD for "notion" at the time.
Hunt is a text based 2d multiplayer labyrinth deathmatch game. It even has a unique feature: Labyrinth walls that you can shoot and that will eventually regrow (sometimes different than before).
*You have a small typo in your title: should be spelled "emacs" ;)
Kidding aside, the course is fun, nice work.
Per other comments in the thread, if you want to integrate vim muscle memory and browsers, check out the Vimium extension for Chrome (granted, I've overwritten the defaults with emacs, but the idea has still been helpful and minimized mouse use).
ESC
Ctrl-C
ESC
Ctrl-Q
ESC
Ctrl-Z
* dangit, suspended *
fg
ESC
:q
E37: No write since last change (add ! to override)
!
E37: No write since last change (add ! to override)
!:q
E37: No write since last change (add ! to override)
@!&^#!&!!:q
E477: No ! allowed
Reboots Server
Ctrl-Z
kill -9 %1VM465:1 POST https://api-vim-so-prod.onrender.com/api/v1/billing/create-c... net::ERR_CERT_INVALID
Minor detail: I would recommend you set up the keyboard focus on the game as soon as the page loads. Saw a comment mentioning that the HJKL keys were not working and the same happened to me...right until I clicked on the command-line box in order to have my keyboard focus it.
If someone asks me how to do something, I have no idea, I have to physically pretend like I'm doing it on a keyboard to figure out the command.
A free resource I really like is simply running `vimtutor`. It gives you a text file with exercises and you edit that text file directly.
noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>
There, now your arrow keys do nothing, too! (This is a good way to "train" yourself to not depend on the arrow keys.)could do with taking out your console.logs
```export default function KeyChar(props: any) { console.log(props); return ( <span className="text-gray-800 bg-gray-100 text-xl leading-5 py-0.5 px-3 border shadow-md border-gray-300 rounded-md text-center"> {`${props.keyChar}`} </span> ); } ```
Your average time was 0.32s. Click below to share your time on twitter and compete with your friends.
Perhaps? haha
Though, I totally agree with you, haven't seen anything that beats vimtutor, except maybe for a vim cheatsheet as reference material.
The lessons are:
- Basic Navigation
- Command Basics
- Insertion
- Append
- Deletion
- Word Level Navigation
- Select Mode
- Advanced Word Level Navigation
- Yanking/Putting
- Matching within tags {} () "
Sorry plebians
I gave in to that social pressure early on. But even 30 years ago in the early 90s when I started learning vim (and Linux), vim and emacs were very dated programs.
Over the course of thirty years I have managed to finally learn how to set up syntax highlighting, terminal colors, and spaces vs tabs and do a basic cut and paste operation. But the cut and paste never works in a sensible way for me and I always end up having to fix something after pasting. So I am probably still doing that wrong after thirty years. Lol.
I suggest using sshfs or Docker and then you can just use a graphical client. Even gedit is a huge advantage over vim in my opinion (especially if you also have fish in another window). I like how lightweight and simple it is and I think it's really underrated. But also VSCode, Sublime, maybe Atom. Maybe WebStorm.
There is nothing wrong with using nano in the terminal. It's more modern than vim and probably going to be much more productive. I recommend if you are embarrassed about using nano and someone asks, think of it as if someone asked you if you are Christian or Jewish. You can just say you are agnostic about editors, and use a modern tool.
Also take a look at TextAdept in the terminal. It is customizable with Lua.
I really like Jupyter Notebooks for lots of things. It's a great implementation of literate programming, especially if you take advantage of the markdown to explain things thoroughly. Of course a lot of teams are not going to like that but there are projects where you can.
Back in the early 90s there was this thing called Borland Turbo Pascal which had things like mouse usage, automatic syntax highlighting, F1 for instant contextual help, an integrated debugger. Those were the days. Lol. You can configure vim to do all of those things in kind of a janky way, but it's so convoluted, I feel like they should award a PhD if you achieve that. And they don't. So it's not worth it.
People love to glorify the "power" of vim commands. But it's not that way because the original author knew some secret to power editing. It's that way by default, because when it was created, commands and modes were the paradigm by default because of historical terminal limitations. A few people were still using Teletype at that time. Real-time editing was not even a thing.
The terminal they initially developed vi on did not have separate cursor keys. That's why it doesn't use cursor keys, not because it's some deliberate choice they made to save time and be more "advanced".
http://xahlee.info/kbd/keyboard_hardware_and_key_choices.htm...
I just feel like not only are people repeating the mistakes of their fathers, but even their grandparents at this point. It's not 1978 anymore. It's 2021.
I think it comes down to how people like to use their tools and how they like to shape their working environment. I've gotten my vim/linux machines into a place where editing code is comfortable, and I'd love to share it with people, but I understand that they may not want to do it. And that's fine!
Use what works for you to get your work done!
But I also think I wasted a lot of time over the years figuring out how to use it and how to set it up. I am trying to save some people a lot of time. I actually think I am still wasting time with it and its because of social pressure to use an outdated program. Its like some kind of psychological thing that has me compelled to be irrational to fit in.
I don't think it's fair to say that the user interfaces are bad, though. The defaults may be bare bones, but the point is that they are programmable environments that allow you to tailor them to your needs if you want to.
That's it.
I also think that it is objectively true and not only fair but also important for people to start to point out how bad these interfaces are. At some point traditions start to become a drag on society.
One of the core principles of user interface design is useful defaults. And there are many better modern editors with equal amounts of programmability as well as useable and useful defaults.
Have a good day.
That's not what you said though. You said brains work differently.
You don't like what I like, and that's fine, but I can tell you that I like the design of older computer systems more than I like the design of modern computer systems. There's a reason why I use the tools I do and why I can write really good software really fast with them.
You can argue that they're dated, and that's fine, but you're arguing that if we like them that we're wrong, and that's not okay.
I'm realize I'm shouting at the wind, though.
And suggesting that people who don't appreciate vim are slow learners. Which is not okay.
But I think we can both agree on one thing. Its not productive to continue the discussion.
The 2nd is definitely against the site guidelines.
To address your other comments, I can share a personal anecdote. When I started programming, I basically just learned the bare minimum VI commands to get around. I didn't see it as "a religion" or a relic from the past, but I saw a fairly steep learning curve that wasn't a high priority for me to tackle at the time.
Years later, I did get into it. It's been good for me in terms of efficiency, but much more importantly, it's been good for my health. At the end of 2017, I had severe RSI and from working an extreme schedule on a startup and a poor ergonomic setup. My wrists were so injured that it hurt to even brush my teeth.
I got an ergonomic keyboard, and made a concerted attempt to use the mouse as little as possible (and balance that little bit between both hands). I made VIM my primary driver, regardless of what other editor I was using. Even on web pages, I attempted to use keyboard navigation where feasible, especially in email and similar apps.
As a result, I've no healed to where I do full-time weeks at the keyboard again and I will probably always be grateful to VIM (and Kinesis!)
It absolutely is like a religion and an enormous amount of time has been wasted with people feeling they need to learn how to use these extremely outdated programs with user interfaces invented 40 years ago.
I am trying to save some people some time. The fact that you are trying to stop me from doing that indicates to me that I have committed heresy. That is why you want to have my comment declared invalid. It contradicts your worldview.
In the guidelines (https://news.ycombinator.com/newsguidelines.html):
> Please don't comment about the voting on comments. It never does any good, and it makes boring reading.
Vim itself is a really really bad editor. It's so obvious that it was written by a programmer with commands like 5dd, 6gg etc. I find it so ridiculous that a computer program can be that much loved and yet it doesn't even provide line numbers out of the box nor indentation. Does a person really need to spend half an hour googling just to tell vim to indent Java code as they type.
I'm going to work on SEO next for it :)