So you will find nothing intuitive in vim until you grok vim[0]. If you want to learn vim, you should accept that as soon as possible. Things are the way they are because they've been that way forever.
Once you learn the keys for certain operations and grok vim, you can combine them in a way that I would argue is actually the most consistent compared to any other editor.
In terms of strain, do you not feel strain moving your hand to the arrow keys every time you do those operations? If you do decide that you like those bindings (personally I avoid arrow keys), you can get those same bindings in vim. FWIW, I use `_` to go to the first none whitespace character in a line, not sure if that makes it any better.
Also the tabs in vim are second to none (only emacs and kakoune are equal). It's actually the biggest thing that annoys me about other editors. VSCode and JetBrains have good enough vim emulation, but their lack of vim-like tabs is my biggest complaint. I never see people advocate for vim tabs in these types of threads, so I've been championing them every time I can :).
> Also the tabs in vim are second to none (only emacs and kakoune are equal). It's actually the biggest thing that annoys me about other editors. VSCode and JetBrains have good enough vim emulation, but their lack of vim-like tabs is my biggest complaint. I never see people advocate for vim tabs in these types of threads, so I've been championing them every time I can :).
Are you referring to tabs as labels in the top of the editor or tabs as the key ? If the first, can you elaborate ? I only use tabnew bound as tt and gt/gT to navigate them. I always felt I was missing something but I don't know what. I sometimes do :vsplit to navigate the same file and look at different parts but I don't have buffers with the same content spread across multiple tabs (I am actually bad at buffers, I still see them as just "opened files").
Yes, the first, and sure! So the reason tabs are great in vim (and emacs, and you can kinda do the same with kakoune) is because they are collections of windows (which are views of buffers).
Splits are the main thing. Imagine we have 3 files open in splits like this:
┌───┬─────┐
│ │ B │
│ A ├─────┤
│ │ C │
└───┴─────┘
You can do that in any editor. Now lets say you want to open two more files D and E and have them split side by side. In vim, you can make a new tab and create that layout and then quickly switch between A/B/C & D/E. You cannot do that in VSCode or JetBrains. If you're in section B and open a new file, it will make tab inside section B.
When I'm using those editors, I find myself constantly creating and destroying layouts and it drives me insane. Let's say I'm editing some files and want to look at the diff of what I've done so far, in vim I can open a new tab and have diff|original. In VSCode it will open the diff in one of my splits, and since it's a diff, it will be split in 2 as well. On my laptop I can't see anything if my diff|original only takes up half my screen, I have to resize/close splits at that point and then going back to what I was doing is more difficult.
When I'm working on code and writing tests, I'll usually have my tests in one tab and the code in another. Or if someone asks me a question, I can make a new tab, start searching/reading code in there and then quickly go back to where I went. I find it extremely handy for context switching.
> (I am actually bad at buffers, I still see them as just "opened files").
I think that's fine. That's the mental model I have as well, except you can have non-file buffers as well, e.g. for plugins. It's actually another great thing about vim, you have to actively try to break the normal hotkeys, otherwise everything works. You can use the same keys everywhere to navigate around in any plugin (unless they override them).
> You can do that in any editor. Now lets say you want to open two more files D and E and have them split side by side. In vim, you can make a new tab and create that layout and then quickly switch between A/B/C & D/E. You cannot do that in VSCode or JetBrains. If you're in section B and open a new file, it will make tab inside section B.
Ah, I see yes. VSCode doesn't have nice buffers.
> When I'm using those editors, I find myself constantly creating and destroying layouts and it drives me insane. Let's say I'm editing some files and want to look at the diff of what I've done so far, in vim I can open a new tab and have diff|original.
How do you open the original file ? When I open the file again I end up with both buffers with the same modified content.
> In VSCode it will open the diff in one of my splits, and since it's a diff, it will be split in 2 as well. On my laptop I can't see anything if my diff|original only takes up half my screen, I have to resize/close splits at that point and then going back to what I was doing is more difficult.
Ah yes, when I stumbled into vscode git diff mode I get narrow panes lit up like a christmas tree. I do my git diffing in the terminal or in git-cola or whatever then.
> When I'm working on code and writing tests, I'll usually have my tests in one tab and the code in another. Or if someone asks me a question, I can make a new tab, start searching/reading code in there and then quickly go back to where I went. I find it extremely handy for context switching.
I usually end up with two instances of code running: one for backend/model/controller and the other for the views.
> In terms of strain, do you not feel strain moving your hand to the arrow keys every time you do those operations?
This is an interesting question - I don't consciously think about it, so I just tried typing with that in mind. I kinda treat the arrows as my normal mode, hopping around until I find what I want to edit, then adjust my position to start writing. So in my mind it doesn't feel like more of an interruption than switching modes. Also, when I shift position, I shift at the elbow, so my wrists are always parallel with my forearms and I prevent strain.
Once you learn the keys for certain operations and grok vim, you can combine them in a way that I would argue is actually the most consistent compared to any other editor.
In terms of strain, do you not feel strain moving your hand to the arrow keys every time you do those operations? If you do decide that you like those bindings (personally I avoid arrow keys), you can get those same bindings in vim. FWIW, I use `_` to go to the first none whitespace character in a line, not sure if that makes it any better.
Also the tabs in vim are second to none (only emacs and kakoune are equal). It's actually the biggest thing that annoys me about other editors. VSCode and JetBrains have good enough vim emulation, but their lack of vim-like tabs is my biggest complaint. I never see people advocate for vim tabs in these types of threads, so I've been championing them every time I can :).
[0] https://stackoverflow.com/questions/1218390/what-is-your-mos...