I have reached Vim nirvana
maxwellrules.com
maxwellrules.com
I actually view this as another advantage of Vim; you don’t have to learn new keybindings every time you switch editors.
Vimium radically improved my entire web browsing experience. I can't live without it anymore.
https://addons.mozilla.org/en-US/firefox/addon/vimium-ff/
https://chrome.google.com/webstore/detail/vimium/dbepggeogba...
I would say that going 100% Vim is reasonable if you have a very stable development stack/environment. You spend a few weeks (or months, which is more realistic IMO) setting things the way you like and then use the setup for years.
If you work in several different languages, connect to several different databases, and also like to play with other tech stuff, VS code (and/or JetBrains products) with Vim bindings is usually more ergonomic. Both VS code and JB have very nice Vim plugins, so you get like 80% of Vim power + a lot of polish and modern tooling from VS code/JB.
How you know somebody doesn't have a clue what they are talking about.
That's like saying "chess is a bunch of nerds playing chess with more pieces."
You get the illusion that you are using Vim and at some point you are rudely reminded that no, you are using something like it, but missing crucial features.
I tried to use VsCodeVim, but I stopped after it made me lose a file...
This is going to vary heavily from user to user. I'll admit it's been some years since I last tried anything new, but I never found Vim keybindings that were complete and configurable enough to comfortably replace Vim. It's always more like a UI uncanny valley in that the keybindings are relatively close, but imperfect enough that they interfere with my typical workflow.
I have yet to find an IDE that has integrated well with key bindings.
I beg to differ. The whole Vim is the selling point of Vim and that includes a fully functional Ex mode (command line).
Granted, escape also meets those criteria if you map it to the caps lock key, which I do. The jk mapping is still useful in the rare occasions I use vim on my phone, though.
Ctrl+AltGr+8 is involved enough that I might as well press Esc.
A lot of software developers are unaware of the AltGr[1] key or even assume US ANSI layout altogether so as a user I have been trained not to take keybindings involving that layer for granted.
As a real world example of similar issues, there's piece of software (I think it was telnet or mosh, but I apologize if I misremember) where Ctrl+^ is used as an escape sequence. This doesn't work for me, possibly because caret is a dead key[2] on my keyboard. For some reason, perhaps related to using scancodes instead of key codes, Ctrl+6 happens to work in that application.
[1] https://en.wikipedia.org/wiki/AltGr_key [2] https://en.wikipedia.org/wiki/Dead_key
Even after 10+ years of daily use, I never managed to make navigating via hjkl work naturally with my brain — I need “up” to be physically above “down”. So I set up key bindings for the classic “inverted T” formation, dealt with the secondary effects, and I’m much more comfortable. https://github.com/rectang/dotfiles/blob/30e0a41714c34416f10...
Dare I say I use vim more like it was intended to be used with this new setup, as my right hand remains in place and is not constantly flying to the arrow keys and back.
Now I struggle a bit when I have to work on a stock vi, but that’s a very small part of what I do.
I learned Colemak about ten years ago but only got into vim in the past three years. Does anyone use vim with eMacs bindings?
https://ergonomictrends.com/wp-content/uploads/2019/02/prope...
Even clicking on links...w/ Tridacty you just press "f" then all the links get have a 2 or 3 letter combination to open them:
https://i.imgur.com/xfWRbC7.png
tabnext/tabprev is shift-J/K etc. history Back/Forward is shift-H/L... those 4 groups (clicking, history, tabs, and scrolling) = 90%+ of browser usage
Using the mouse is way less efficient. Learning how to browser purely with keyboard is very rewarding.
``` " Make carat easier to type. inoremap <C-a> ^ ```
I now do a pretty standard config (mostly use the vim plugin in VSCode since I'm a software dev nowadays).
set tabstop=3 set shiftwidth=0 set autoindent
I don't think I'll ever describe myself reaching <X> nibbana, because, well, a hammer is a hammer, an IDE is an IDE, a tool is simply a tool, a means to an end.
If you know a text editor like the back of your hand, why would you learn another tool when you can take a different approach and be even more effective?
I always remember a coworker who was determined to use Emacs on our Java codebase. He spent three months trying to get functionality equivalent to 2010 Eclipse (I was one of the IDEA hipsters in the company back then), and failed. Hard.
I always thought that in 3 months,n if he'd applied that effort to Eclipse, he'd probably be contributing patches to it.
I have sought to incorporate vim wherever I could because my muscle memory demands it for productivity.
It's not from a lack of learning tools.
Other people love certain tools so much that "the work" is actually just an excuse to use their favorite tool in more elaborate and challenging ways. Their attitude is something like "and now for my next trick..."
The funny part, to me is that I've never been able to see one method as producing better results than another. I've seen work focused folks produce bad output and I've seen tool focused folks get caught up in their tools and never produce anything at all.
But I've also seen both types produce masterpieces.
Just different approaches and personalities I think.
We're both driving cross country, following the speed limits. We'll both arrive at roughly the same time but maybe I'll enjoy my time more if I'm driving a stick shift.
This is in general of course. Me personally, I save tens of minutes a year by using vim.
Probably more. It’s not only the speed of typing and editing that matters, but also the time you spend on context switching. When your hands don’t leave the home row you don’t leave the current context.
It's the same with vim. You start thinking "delete that word", or change everything until the '(' character. When you start thinking that way, changing the way you think becomes distracting.
> It blows my mind that there's so much devotion to the tool first, problems second, which must be mashed into a shape that fits my tool.
I see it more of a question of, do you change the way you think to match the tool? Or change the tool to match the way you think?
I don't think there's necessarily a right or wrong answer, at some point I changed the way I think to match the vim model. Now I change things to match the vim model rather than change the way I think.
for some the journey is never the goal.
And I still use it.
So yeah, guess I haven't hit 20+ years, but I'm pretty damn close, and still not as committed to it as you are.
Length of time using it doesn't correlate to passion.
(Also, 30 years? Christ I'm old.)
i was trying to make a point that it's a tool with a very long history and all the time i "wasted" (and still waste) on learning it was well invested, as it's going nowhere and i spend 8-9h in it a working day.
i think i've been using only a shell longer than vim.
Yes, that's true. I can't fathom writing Java in anything other than Intellij because it's shaped my thinking to "my tool should already know what this symbol is, where it is, and what arguments it might take". I guess it's shaped my expectations more than my thinking, but I hope you see what I mean.
> I see it more of a question of, do you change the way you think to match the tool? Or change the tool to match the way you think?
Fair question. I guess my response is that one of the lessons I've learned the hard way in life is that my way of thinking can be wrong.
And while I enjoy a tool you can tweak to your desired tolerances, I prefer to use the tool that is most closely aligned to the task at hand.
You can get a nice even surface on a piece of timber using a chisel very carefully. Or, you can use a plane.
You can cut down a tree with a stone lashed to a branch, or you can use an axe with a metal head. Or, a chainsaw.
Changing between any of them requires a revision of how you think about the process, but it seems obvious that the cost of doing so might be worth it, even if the chainsaw requires changing how you think to incorporate concepts like kickback.
There are other languages besides java and C#, where advantages of IDEA are small to none. For them, you have to accept a bloated project-based resource-consuming monster. Or you do not and just write rust in vim or emacs. In times of LSP and DAP the gap is getting smaller each day. But IDEA is not getting faster, and never will.
> But IDEA is not getting faster
I disagree, there's been several changes made I can think of to improve speed
It's the best of all worlds!
> It blows my mind that there's so much devotion to the tool first, problems second
The problem is clearly outlined here: "Manipulating raw ipynb files is difficult and unergonomic."
OP is not fiddling with his or her editor configuration because of any undue focus/deficiency regarding Neovim. The deficiency is in the Jupyter notebooks editors. In other words...
Problem: Jupyter sucks; my thoughts are always slowed down by having to squeeze them through a low-bandwidth link and the ergonomics hurdles that comprise basic text inputs--I want to go fast, but with Jupyter, I can't.
Their solution: This.
What are the odds?
PS, describing my comment as knee-jerk is unhelpfully dismissive. I'm always keen to engage, and always happy to acknowledge when I'm wrong. :)
What are the odds that the solution involved a popular, mature tool that the developer could leverage?
> What are the odds?
Very good, actually.
You seem (and seemed) to be unaware how dismissive your original comment was. In fact that was the entire point of the response. To take issue with that response on the grounds it itself is "unhelpfully dismissive" involves layers of irony.
1. You’re talking about an editor that has been popular across multiple decades and across many many generations of technologies.
2. The editor they’re already using obviously already does things in ways they like. That’s why they are using it. So the odds that their editor will perform the job well for them is also pretty high.
> I don't think I'll ever describe myself reaching <X> nibbana, because, well, a hammer is a hammer, an IDE is an IDE, a tool is simply a tool, a means to an end.
According to the Zen master Dogen:
“Before one studies Zen, mountains are mountains and waters are waters; after a first glimpse into the truth of Zen, mountains are no longer mountains and waters are no longer waters; after enlightenment, mountains are once again mountains and waters once again waters.”
"When I first began
To cut up an oxen
I would see before me
The whole ox
All in one mass.
After three years
I no longer saw this mass.
I saw the distinctions.
“But now, I see nothing
With the eye. My whole being
Apprehends.
My senses are idle. The spirit
Free to work without plan
Follows its own instinct
Guided by natural line,
By the secret opening, the hidden space,
My cleaver finds its own way.
I cut through no joint, chop no bone."
It's not the tool, but the wielder.
It’s following the tao of the ox. That’s why he didn’t need to sharpen his cleaver for a decade or something, it just “naturally” went into the empty spaces, rather than stumble against bones and sinews.
(If I remember correctly; my old Burton Watson copy is now sadly long lost.)
It's safe to say most people see mountains as mountains etc. When you start practicing Zen, you glimpse into the inseparability of things: there is really no defined boundary between the 'atoms of the mountain' and the 'atoms of the water'. (Also the atoms themselves are mostly empty space with a probability distribution of where the 'stuff' 'is'). Things like 'mountains' are really illusory abstractions that humans build on top of the underlying reality of the swirling wave patterns of the universe. 'Existence precedes essence', as the existentialists say.
Still in this second phase, you notice things like when you have a conversation with another, the conversation is not really being generated by either brain, it is being generated by the system that includes both brains (and nerves, muscles, vocal cords, the air between them, eardrums, etc.)
However, after enlightenment, you realize that the underlying physics is no more 'real' than the abstractions, as the abstractions are what really has an effect on the universe. As Zizek might say, the distortion itself is the real. When I see a mountain, the way that my brain interprets it as a mountain, in effect makes it a mountain, because the symbol itself manifests itself in my thoughts and actions.
I’d also note that Dogen wasn’t trying to sound deep - perhaps unlike Sartre and Zizek.
Because there’s a tool and there are (current and future) problems that can be solved with this tool. It’s an one time investment into a tool and it helps to solve multiple future problems more efficiently. Especially with vim or rather modal editing - this skill can be applied everywhere, including your favorite IDE. Though, it may be unrelated to the problem that OP was solving.
It was always my editor of choice when SSHing into a box over dodgy dial-up for the very obvious reasons, a few keystrokes could be immensely powerful, and they're easy to transmit.
But I've never felt the urge to run Vim bindings in my IDE, or my browser. But for working on a file over SSH? Vim all the way.
Different tools for different situations.
Or are you saying the blog post is a hoax?
What made you think that their devotion to the tool indicates that they care less about the problem? I wonder what you might think about me then in that I have vim integrated with mutt for composing emails, git, my password manager, code editor, text pager, etc land me in vim. I choose most my apps so that I can use vim for text editing. It gives me uniformity. It saves me time.
More importantly, I do not get a negative reaction from people that use different text editors for different text editing tasks looking for buttons to click, shortcuts to press in different places.
Especially nowadays, when tech is converging, getting locked down, and we are being told what and how to do things by a few companies, we must appreciate and encourage diversity of tools (except for emacs obviously:) that empower their users. Not be dismissive and judge them for using a tool that we don't use.
It's okay for people to master tools they find valuable, and use that mastery to do good things even if they're off-road tools (by today's standards) such as vim.
It's possible I missed something, but I didn't see the author being devoted to tools first, nor mashing problems to fit their tools.
Edit: browser-based Jupyter would also fall down here as the penalty for a graph being too big is at least a kernel restart.
But I've found with jupyter that it's most productive for me to just use jupyterlab in the browser, it has lots of features and for the visualizations that I do I need a good viewer. So vim doesn't work, and executing in ipython is like the console, not the notebook interface anyway.
I recommend using jupytext too, and then you can keep .py files as the canonical notebook files in your repo and code history.
1. If there's a really visually intensive workflow, like some sort of data exploration step where I need to be generating and inspecting multiple plots at the same time over and over.
2. If my goal is to make an instructional artifact and interleaving Python and explanatory HTML is helpful.
(Also, the image-invoking functions are just native functions in the source language, so I get a lot of orthogonality for free. For example, all the eval- and send-expr- style keybindings work automagically -- no need to extend the elisp language mode to special-case images).
I see the appeal of Jupyter notebooks for someone testing out things or experimenting, but it's a bit like a brain dump that isn't that trivial to navigate around when a second or third person is involved.
It supports vim and emacs style key-bindings, and can display rich cell output like images and widgets.
But when you just want to fire an editor to do a quick change, vim is your friend. It’s also reliably present on almost any server you’ll ssh into
This combined with the excellent text manipulation features right there from the keyboard, without leaving to menus, being able to just flow with the Vim -keybindings, and in all different IDEs and editors that support Vim -support, it's just great.
But, since you mention it, there are a few things that appeal about vim. For me, personally, I am quite often working on remote systems from the command line. Being able to "vi filename" and make some changes and get back to the command line is important and VSCode doesn't seem to work for that. I know it has remote editing, but navigating over there from Code isn't worth it when I can just "vi filename".
A significant part of the appeal is the modal editing, which as I mention above is available in Code.
Imagine instead of pressing backspace to delete a character, you would have to delete the individual bits that make up the character. A character is just an abstraction of bits, that your text editor/IDE takes care of for you so you don't have to think about it.
Vim is also an abstraction, making it similarly far more convenient than doing everything by hand. Think about it: Is "forward 2, backspace 5" or "delete this word" a more natural abstraction?
So what's the advantage? Speed, but not typing speed. It's about the mental distance between the model in your head of what you want to happen (delete everything between the parens) and the model your tool understands (go forward some words, go forward 1, delete backwards 20). Since speed = distance per time, reducing the mental distance increases mental speed.
And that therefore uses less mental energy on translating for your tool, and leaves more room for doing hard mental problems, like fixing a bug.
(Full disclosure- I never write JavaScript).
All these people who claim the keyboard is so much faster than the mouse (instead of a combination of both, as I claim), are people who never played StarCraft.
Select from this point to the parenthesis? I can see the parenthesis, and I can do the mouse select as fast as they can with their keys.
The use of four keys to move the cursor? I can use the cursor keys the same way, they work in all programs, and I have used them so much for many years that I don't need to see the keyboard either. I move the hand and the keys are where I know they are. And they are familiar, and I can use any keyboard in any normal computer as well.
So, my point is: muscle memory helps, a lot. Vim doesn't have a monopoly on muscle memory.
Sometimes I still use Vim only when editing some old school stuff or just simple files though, for my development journals I still always use Vim.
I still use vim for small stuff but for navigating commercial codebases I can’t imagine not using a fully fledged IDE.
It takes some effort and likely 20-30 plugins, but you get to learn a lot and IMO become a better programmer as a (unintended?) side effect. For me it's part of the continuous improvement to understand your tools.
Last but not least it's just so much joy when you can envision a certain feature (e.g. I wanted to have a function header visible in the first line of editor even when the top of the function has scrolled off the screen) and either find a plugin or program it yourself. This is exactly the kind of primal joy that initially made me pursue the career of software engineer.
[1] The concept of PDE is explained in this video: https://youtu.be/QMVIJhC9Veg [2] Easily is relative. IMO each little customization is quick, but you'll end up customizing hundreds of things over time.
This sounds super-useful. Do you mind sharing how you achieved this?
For vim: https://github.com/wellle/context.vim
For neovim (much higher performance in my experience): https://github.com/nvim-treesitter/nvim-treesitter-context
I believe there's now also a VS code plugin for the same behavior, but I don't know what it's called.
It's called "sticky scroll". It's a relatively new feature of VS Code.
https://code.visualstudio.com/updates/v1_70#_editor-sticky-s...
I'm rewriting it to be 100% Lua at the moment. It's 80% done and I've just pushed it for you. Take a look at the init.lua and ignore init.vim which is going away and is in a messy transitional state. The only thing that's missing in the Lua config is LSP integration, but that should be done by tomorrow as well.
Edit: Just remembered that the Lua version also has no plugin manager, but there's plugin-install.fish script that just clones plugins into the correct folder, which works for now. I'll probably add lazy.nvim plugin manager in the upcoming weeks as well ;)
``` -- Move cursor to start/end of line vim.keymap.set({"n", "v"}, "H", "g^") vim.keymap.set({"n", "v"}, "L", "g$") ```
I just finished refactoring and dusting off my config with a structure similar to this video https://www.youtube.com/watch?v=w7i4amO_zaE
When I leave Neovim, everything else seems slow and frustrating by comparison. If anything, that is the reason to avoid it. It ruins a bunch of subpar editors for you.
If you start using Neovim know you'll be spending hours breaking and updating your config to reach "vimvarna". Let me know if you ever get there ;) you can enjoy the journey getting close to perfect just for something else to break the next day.
It is crazy to me people try to shoehorn jupyter notebooks and debugging into Neovim, if you haven't try the jupyter notebook extension in vscode, will make you reevaluate your life choices
Breakages are rare though especially if you use a plugin manager that shows you commits from your current versions of plugins (e.g. lazy.nvim [1]) so that you can see if you need to update anything.
[1] An example of lazy.nvim plugin update experience: https://user-images.githubusercontent.com/292349/208301737-6...
Emacs is a great IDE framework, but a mediocre editor (compared to vim keys and modes, and IMO evil only helps somewhat)
One day someone will be blessed by the Buddha himself, and will go on to create an Emacs clone running on a Lisp with native and default support for a modal editing system. The whole of humanity will enter nirvana, ending the infinite cycle of reincarnation^Hreinventing the wheel.
It depends a bit on what language you use, but people who claim (neo)vim is a bad IDE are IMO wrong.
(even though it's not 'real vim', it's good enough for using both cmdline vim and vscode without the brain having to switch in and out of 'vim mode')
there are almost always quirks, but the biggest issue tends to be when bridging the gap between vim and the GUI itself, particularly around the modality of vim vs graphical autocomplete.
If you're less experienced as a vim user these emulators are probably perfectly fine, but as someone who has been using vim for something like 20+ years, they _always_ feel just off enough that I either just go back to vim or edit the way the editor originally intended.
Combine that with the fact that all the UI elements are not vim-ified. In vim, since everything is a pane and a buffer, you just think "I want to select the panel to the left". Regardless of if it's a plugin view or a file or whatever.
In vim emulator's, that's never the case. It's really not the same, but better than nothing. The vscode plugin and the IntelliJ one are both pretty good compared to previous ones that I tried. But the IDEs are just incompatible with the vim ideology, in my opinion.
If nothing else, the performance characteristics of vim are predictable (to me, after all these years) and there are various ways to work around any problems that occur (disabling plug-ins, etc).
Just a little counterpoint basically - I don’t think you need Vim’s entire editor model to get a lot of value out of it!
My comment wasn't meant to dissuade anyone from trying the vim plugins. I was just trying to explain why someone would consider the vim emulation plugins not as good as the real thing.
Not once in the past eight years have I had to use tabs for something. The buffer list, yes. The argument list, yes. Tabs, no.
If all you care about is buffers, what do you miss about them in vscode or IntelliJ? Their idea of buffers is the same as vim, as far as I can tell.
Or is the problem that the IDE functionality is not implemented as buffers? So you can't use your normal keys in non-text places? That was what I was referring in the second part of the comment.
[0] https://github.com/helix-editor/helix/issues/2295#issuecomme...
The workflow he is describing works with :bufdo, :argdo, :bn, :n, etc.
He is also not describing what is special about tabs. Tabs in vim are groups of windows.
I’m not sure if you were asking me, but no, buffers are not the reason why I exclusively use vim.
> The workflow he is describing works with :bufdo, :argdo, :bn, :n, etc.
It's different because you are losing context. It's not about finding the right buffer, I understand buffers, I have no problem switching between them and finding them. It's about organizing windows in a way that makes sense and then quickly switching between them.
> He is also not describing what is special about tabs. Tabs in vim are groups of windows.
Exactly! And no other editor implements it that way. It's about context switching quickly. I setup my tabs per context and then I can quickly switch back and forth between them, and have all my windows like I left them.
No other editor does it like that (maybe emacs?), because it does not have the concept of vim tabs. Other editors use "tab" to mean "vim window". I'm constantly wasting time recreating window layouts in other editors depending on what I'm working on.
> I’m not sure if you were asking me, but no, buffers are not the reason why I exclusively use vim.
I'm asking what is missing from the IntelliJ vim plugin when it comes to buffers. The concept of buffers is not unique, most modern IDEs implement them the same way. It's why I'm surprised that you mention that buffers are the killer feature of vim, since I don't see anything unique about them compared to other editors.
I'm sorry, I think we have our wires crossed :)
I didn't say that buffers are the killer feature of vim — quite the opposite.
I was replying to the opening sentence of your comment, in which you said:
> The problem with every fake vim plugin is that the underlying editor does not implement tabs the way vim does.
My argument is that problems with vim-like plugins in IDEs like VSC run deeper than just the one you pointed out, especially given — in my opinion — neither tabs nor buffers nor windows are the killer feature of vim. But I can see how my comment can be misinterpreted given I said "vim is all about buffers", which in hindsight I think I worded poorly.
If you really want to ease into it then simply enable the (neo) vim plugin in vscode, it's pretty good. You'll miss some big features but you'll have all the bread and butter features. Only risk is that you'll get used to some vscode features as well.
If you're serious about it, you should use it for everything and use it a lot.
The right setting for me is Vim within an IDE (nowadays VSCode) but I've found it too complicated to try to turn it into an IDE. I find it appealing to be able to do all your work within tmux/vim, and I know a lot of great coders work that way but it's been too much hassle for me.
I also wonder if Vim is a productivity gain at all. I like to be able to navigate/edit a file without taking off my hands from the home row, and also quickly edit a file when I'm in the terminal. But not sure it really makes that much of a difference when you know your VSCode/MacOS shortcuts, and I suppose that with proper configuration, you can also edit file remotely with VSCode and restrict the need for edition within a terminal.
The big productivity gain for me doesn't come from faster editing due to the shortcuts, per se, but from the golden combo of modal editing and macros. Due to how you treat similar looking text in vim, macros are much more powerful than something like multi-line-cursors, which break down when you want to, for instance, delete the first part of 5 pascalCased variables with different lengths. Luckily, iirc, the vim integration in VSCode supports macros, so people who want to keep working in VSCode because of the excellent ecosystem can still have the best of both worlds.
In VSCode there are available bindings for subword navigation (shortcuts starting with cursorWordPart).
In my head all I can think of is all the ways it could be done faster in vim, so it's absolutely a productivity gain, even if it's just a plugin for vscode.
As a quick example what are the vscode equivalents of I and A to enter insert mode in the beginning or end of a line? These small things quickly add up.
Ctrl-a and Ctrl-e do what you say in VS Code (same amount of keypresses as “I” and “A”, or fewer if you're in insert mode in Vim, and you never need think what mode you're in).
Ctrl-w gives you visual selection of the word under the cursor. Repeat to extend the selection (similar to nvim-treesitter's init_selection and node_incremental, but you don't have to set up treesitter and bind shortcuts or learn how to use visual mode).
I use Neovim and learned to use VS Code without Vim extensions (to help/teach others, and out of professional curiosity!).
Editor “X” absolutely can replicate features from Vim well enough in a lot of cases for the differences not to matter too much, because editor X also does some things better or faster than Vim. Plus we can fill in many gaps that really bother us with extensions. For example, this extension for VS Code lets you switch the cursor from the start to the end of a selection similar to 'o' in visual mode in Vim: https://marketplace.visualstudio.com/items?itemName=rioj7.se....
What _does_ seem to be true is that people who use editor “X” are sometimes less vulnerable to spending their free time learning the features and shortcuts of their editor that would make them just a little bit faster. Vim/Emacs users tend to do that because for us text manipulation and editor hacking are a weird kind of hobby.
But I pair with a lot of senior devs who are _very_ fast with VS Code/IntelliJ these days without Vim extensions. I have also spent much less time making VS Code completely keyboard-driven than I have customising my Neovim config to achieve largely the same abilities (only with Neovim I also lack a lot of healthy things like screenreader support). In VS Code I just needed:
- File Browser (keyboard-driven file nav/creation without using the tree view): https://marketplace.visualstudio.com/items?itemName=bodil.fi...
- Edamagit (keyboard-driven git commits): https://marketplace.visualstudio.com/items?itemName=kahole.m...
- [Optionally]: VSCodeVim ( https://marketplace.visualstudio.com/items?itemName=vscodevi... ) or VSCode Neovim ( https://marketplace.visualstudio.com/items?itemName=asvetlia... ).
Of course (and I mentioned it in my first comment) there are people fluent in vscode but it's far from the norm, and doesn't have to be. As you say for vim users it's a hobby or even lifestyle.
But this thread started with questioning if "vim is a productivity gain at all", and I'm confident it is. I use it everywhere from window manager to browsers, and where it isn't natively supported by plugins/extensions I add my own keybindings to get at least movements and scroll.
Conversely, saying "delete in parens" instead of "move forward 5, delete back 10" is also a real gain.
That being said, use what you have. With editing, and navigating the same file, Vim or it's emulations are almost always better, but most editors offer great cross-file features you should also use, like the "shift shift" in Intellij IDEs, or "ctrl-p" in vscode.
If you keep at it you will develop the muscle memory. I am not an expert in Vim, but I use it whenever I want to write some code. Once I was given a coding problem to solve. The interviewer gave his laptop to me with part of the program implement and I had to complete the program. The problem was the C++ code was written in Visual Studio on Windows and I had not used that setup for a long time. So it was frustrating for me and amusing to the interviewer to see when I use to press Vim keystrokes while writing the code in VS :)
And this is why I have never been comfortable with vim or the idea learning it on that level. Why would I spend time muscle memorizing a program that conflicts so much against all other editing software and related paradigms? The skills do not scale enough to make it worth the effort imo. Sure your vim powers skyrocket but any other interface where you have to type becomes a nightmare to work with effectively.
Are the advantages of working really really well with one tool worth the effort when you lose productivity in every other tool (99.9% of them) out there? Maybe if you can live constantly in vim but how many of us truly only edit text files during our day to day?
Many other programs loosely follow vim bindings. For example if you enable hotkeys in GMail webclient you can use j and k keys to move between emails, press / to search just like in vim.
In the comment you replied to the author was in an interview situation so they didn't have time to install any plugins.
Because no other editor is oriented to muscle-memorizing.
> any other interface where you have to type becomes a nightmare to work with effectively.
Something tells me that you are talking about some interfaces with mouse. It's really a nightmare for mine inner vimmer to get my hands out of keyboard in any other editing interface or even to look at keyboard for searching those Alt-Ctrl-Shift chords.
Then one day I realised I was still more productive in sublime with its simple but powerful keybindings than I was in vim. I dropped it and never looked back.
I respect people who can and love to use it, but its simply not for me
for jupyter in vim I do think vscode has some edge, it can show the output(i.e. graphs) right inside without a browser.
plus jupyterlab has vim mode to get by.
will find sometime to see if these steps can be converted to vim.
Neovim has a lot of momentum going and high quality (and fast/light) plugins, in part due to Lua, but also due to the ever growing integration with modern editing and software development tools like TreeSitter and LSPs. It's a really nice ecosystem, where you can find pleasant plugin surprises almost every week. I really like it, but if you fancy a more stable and battle-tested system, vim may still be more appealing. Or neovim with just classic vim plugins.
That said, I’ve probably lost an unreasonable amount of time tinkering these last several weeks, but it’s time I find interesting, so…
[0] https://www.jetbrains.com/help/pycharm/jupyter-notebook-supp...
Actually just editing/copy/paste/delete is more than enough for 99% of uses cases.
I been using vi since 1982 and vim now. No need for anything else.
No plugins. Nothing. Just vim.
I think the ship has sailed