Kudos for reading all those docs and sharing some nuggets.
Does anyone else feel vim clumsy like the author? I'm trying to understand how one could accidentally lowercase a whole buffer, or trigger scary messages or open unrecognized menus. Not condescending, just curious. I find the q: thing relatable, but not the rest.
While I had times discovering myself to accidentally putting 'i' accidentally into MS Word docs and having vim key binding ls in VS Code (and formally eclipse) as well for that reason, I still feel clumsy. I think this is because I mostly rely on muscle memory rather than understanding deeply what I am doing to also allow me to go beyond what I normally do ) which already makes me faster than in any other editor). I found VimSpeak [1] interesting because I somehow understood how to really compose vim commands in a way
I have been using it for 15+ years as my main editor and I still feel clumsy. I move doing jjjjjjjjjjj very often. I guess I have reached a local maxima and I don't want to invest the extra time on improving
"The feeling of true Vim fluency—one where every keystroke is exact, I never make mistakes, and I’m exploiting every obscure feature—is a fantasy, at least for me." - that's a wrong mindset. bash that jk hundred times and adapt when it becomes a nuisance
I rerun vimtutor from time to time, because I still don't remember every trick from it. I've recently tried to read the whole embedded "introductory documentation" on a train, learned a lot, but probably need to do it again. Setting every option in the .vimrc seems a nice exercise, will need to do it some time! I like to nuke my config from time to time anyway. (My experience with Vim is about 14 years I think.)
> The feeling of true Vim fluency—one where every keystroke is exact, I never make mistakes, and I’m exploiting every obscure feature—is a fantasy, at least for me.
Perfection is not particularly attainable, or necessarily the point. Nor would it be that fun, I think? It's nice to have some aspect to improve upon. See this Casals quote:
> A reporter asked Casals, "You are 95 and the greatest cellist that ever lived. Why do you still practice six hours a day?" He answered, "Because I think I'm making progress".
Hokusai wrote at the age of 75 that he would only begin to understand the structure of living beings at 100, and hoped to “reach perfection at 110.” He died at 89.
This feels like the "wrong" direction today with the advent of AI? Just seems like in the realm of "bending yourself to the tool vs bending the tool to yourself," it's the LATTER that's about to get a whole lot easier, if it isn't already.
So, sure, there are probably things you can learn, but e.g. I'm much more about "I think it should be THIS way so how do I make it do that."
Another Emacs user here. I would argue that even Emacs is a bit of a struggle sometimes. More modern editors like Sublime Text, Kate, or even Notepad have an advantage of being intuitive. Typing on a letter always outputs that exact letter. The shift key does one thing and one thing only. Mouse integration allows for rather precise cursor placement in a way that utilizes a human's natural hand-eye coordination. The shortcuts that they do use are common across the OS (no need to remember if the copy you need is Ctrl+A - W, Ctrl+W, Ctrl+Shift+C, or Ctrl+C).
Part of the issue is that operating systems have gotten more advanced and more standardized since Vi and Emacs were originally built. However, there is the case that UI designers have learned a lot over the decades. I like Emacs as well, especially when I am doing sysadmin work. However, I have to admit that it is not always intuitive. And even Emacs is more intuitive compared to the modal-nature of Vi.
Instead of having encyclopedic knowledge of every feature, I think editor fluency is being really good at the few features you need such that the editor is no longer the bottleneck.
The few features you really need to know for VIM are mostly in `:help motion.txt`. Knowledge of other features is obviously helpful in actually editing text, but being able to navigate well should remove most of the bottlenecks, especially considering how most VIM commands take motion into account.
I applaud this project, “setting all the options”. I think it’s a really good idea to become close friends with the software you use all the time, and getting acquainted through the lens of configuration is one way. Messing around with stuff is good.
I feel it’s worth mentioning that there is a sense in which I think it might be a bad idea. It could be that you’d now be fixating some value that may be optimal right now, rather than benefiting from future improvements to the default settings. But it all depends, of course, on how close friends you plan to be.
I never understood the appeal of these command-line editors with a million commands for different edge-cases. Why not just use VSCode? It has every possible extension you already need and a simple GUI. No need to type commands just to edit text when there's a file manager... It has remote SSH and features for vm machines. To me the kinds of people using these editors are the kinds of people that love making everything more complex to seem smart.
> To me the kinds of people using these editors are the kinds of people that love making everything more complex to seem smart.
I finally jumped the gun almost a decade ago because I had too many Electron apps for my cheap laptop to handle and had to scale down to be able to get anything done without freezes.
At first the modal editing was difficult but it clicked immediately and these days I'm handicapped in normal typing. I still type vim motions by accident in Libreoffice which is the last program I use that doesn't support modal editing. Lately I'm getting around that by typing in markdown and using pandoc to convert it to `.odt` or `.docx`.
> every possible extension you already need
In Vim land the first step isn't to install an extension, it's to create a keybinding. It can be as simple as a one-liner, to a shell script or even command-line tools. You can run it on the filename, the file contents, or the selection. The only limit is your imagination and experience. You don't really get it yet because you're conditioned into thinking the way you're used to, not how it could be done.
It has nothing to do with looking smart, I don't care what others think. Could it be your own coping mechanism for feeling dumb about not being able to use it?
If I'm already in the terminal, they're perfect for quickly looking through and editing files. Heck, I've done it plenty where I'm in the VS Code embedded terminal to run some commands and then I want to quickly touch a file and so I open neovim inside the VS Code terminal!
Learning modal editor - vim, nvim, emacs is like skiing or snowboarding. For anyone uninitiated this whole endeavor may seem dumb - you have to spend so much money, time and effort, so you can just descent from a mountain peak to its base on a piece of wood? Absurdly bananas.
Some may even try hitting the greenest, flattest, most beginner-friendly slopes with great confidence, only to find themselves face down in the snow minutes after getting on the lift. They try again. Sometimes, falling for the fourth or fifth time reinforces their belief that it's really is dumb and they just quit at that point.
Some newbie skiers, after a few successful runs, get overly excited and head to the lift for the steeper slope, only to regret their decision. If falling all the way down doesn't make them quit, they may eventually start enjoying it.
At some point, they'd gain so much experience - their movements become smooth and graceful, their speed intimidating. Suddenly, they'd discover an enormous, indescribable feeling of joy. There's so much tacit - emotional, mental and physical enlightenment that is almost impossible to convey to another soul who's never experienced it or rose to that level.
Then there's a spectrum of differences - some still fall all the time yet enjoy it nonetheless, and they enthusiastically discuss with other beginner skiers how awesome they feel. Some, after mastering the most difficult carving techniques, somehow forget their own beginner's journey and become apathetic toward rookies.
So, then why ski [vim] at all? Well, it is truly one of the most efficient, fastest, healthy ways of getting back to the base [dealing with text]. But most importantly it's tremendously fun. Often, in quite indescribable ways. I'm afraid you would never understand the appeal until you do try it. But even then, it's never guaranteed you'd find that thrill; then maybe skiing [vimming] isn't for you. Even though these activities literally for everyone (unless they have physical/mental barriers).
I honestly can't take seriously any programmer who doesn't know the basics of vim - doesn't that suggest they've never used sed, less, or read through man pages? Have they never had to ssh to a remote machine in the terminal? I do though get it, when people say "I tried it and ain't for me". I suppose, it just means they've never hit the spot that inspired them to keep going.
> To me the kinds of people using these editors are the kinds of people that love making everything more complex to seem smart.
"I don't understand something and instead of asking nicely I decide to throw a tantrum and offend people". Why do you think it's appropriate to say things like this? Did I or any other vim/emacs/whatever user forced you to convert to their editor of choice?
I would absolutely not agree it has a "simple GUI". It's "minimullizm" web slop trash that only appears simple because it hides all of its complexity behind a big dumb menu that lists everything alphabetically with a search box. It's one of the most dogshit user interfaces I've ever used.
I'm using neovim all the time, but I don't find this "zipping through the code" to be very critical. Most of the time is spent on thinking and analyzing it, not on fast typing or jumping through it.
I've been using vim for over 20 years as my primary editor. I'm faster and more comfortable in it than I am in any other editor, but I still feel like a vim noob
I still have to look up how to do things I rarely do (like insert the contents of another file at the cursor position). And I don't really use many (if any) of vim's intermediate features, let alone advanced ones.
I've tried various ways to get more fluent, but nothing really stuck or kept my interest. This has always annoyed me a bit...
I think vim's greatest problem is discoverability. It's a big enough problem that after six or so months working full time in neovim I went back to a GUI editor. I just about barely remember the most common commands, but I do not remember (at all) anything I only need occasionally. I also know myself well enough to know I will never remember this sort of thing well. I have a terrible memory for procedural / administrative / ritualistic knowledge.
I'm on Sublime right now. I like it a lot less than vim, but it's far less cryptic. If I need to tile four documents and move text around, I can do so trivially by dragging, without needing a PhD in vim esoterica that I would immediately forget the next day.
I 100% agree, but I also think you can get very far with just taking a weekend to read the user manual (:h user-manual). It won't solve the remembering problem, but it will make looking up help when you need it much easier. For example, you would know that most window operations start with <C-w>, so when you need to tile windows you could start with looking up `:h ctrl_w`.
There is also a very popular plugin for neovim that shows a popup with possible keybinds and descriptions whenever you begin any keybind: https://github.com/folke/which-key.nvim
I think it took me about four months of daily use to know most of the editor basics without having to pause to look up things. Another eight for it all to feel natural. And, maybe about six years later, it remains my favorite text entry and code editing environment.
I've been using the LazyVim <https://www.lazyvim.org/> neovim setup and a handful of extras, but not too many. I still have to look up some esoteric stuff, but for the most part, it's completely natural.
And for the first few years, I was a hardline keyboard-only absolutist, but lately I've been using the mouse where it makes sense, and sometimes it does.
I’ve been using vim and now neovim for 15 years. Before that I was using TextMate. I’ve hand written my own config. I used Janus by Carlhuda, SolarVim, and now I’m on lazyvim because Folke is a goddamn wizard and I want to spend more time getting work done that dealing with breakage in my neovim config
Stuff like typing "10j" made sense when text editing was high latency. Nowadays you can just hold j and stop precisely where you wanted to, even if you're ssh'ing into a server on the other side of the country. There's nothing wrong with it (and in fact I prefer it because of the 0 finger movement required).
The only times I use "precise" movement commands like that is when I'm in the odd situation of having to ssh into something from my phone.
That's because you should've fixed the foundation instead.
For example,
> I frequently opened this by running q: instead of :q, and didn’t know what I had done. Now I know:
But you still haven't fixed the typo-prone keybinds! And you still haven't set up a way to get this information so that next time something unexpected happens you can open your log of commands and see exactly what you've done and decide on the spot if you need to fix it. So you'd need to wait for the next chapter of the "let's read all the manuals" quest to when discover the issue
> Digraphs are an obscure feature for typing obscure characters. For example, you can enter “½” in Insert mode with CTRL-K 1 2. There’s a big list in :digraphs. I don’t use this much, except for typing fractions, but I use this more than I thought I would.
Of course, why would you commit that big list of obscure chars to memory??? The proper interface would be an avoidable visual feedback character picker so that if yo don't remember the "1 2" sequence you can even search for "fractions"
But at this point, why bother with a bad vim component when you can invest in a more general symbol input solution and use it in vim and everywhere else.
> Vim and Neovim have more differences than I thought. Among the many changes, [...], that Q repeats the last recorded macro
I followed the link where it says:
> Q Repeat the last recorded register [count] times..
> {Visual}Q In linewise Visual mode, repeat the last recorded register for each selected line.
That's a surprise, I have both in my config since my time on Vim but I didn't know they were implemented by default in Neovim. I guess the maintainers read the same article I did many moons ago.
Something I did a little while ago was read through most of Busybox vi's source code, and work out my own simple documentation page with most of its options.
It doesn't do visual mode but it does still work with registers etc.
I was lucky enough that my first employer ran the very first 4.2BSD in Denmark outside academia (on a DEC-VAX/750), so i grew up with Bill Joy's newfangled "vi" and spent countless hours recap'ing the cheat sheet.
To this day stuff like "3dw" and "d}{{[P" are just second nature.
Very much enjoying moders stuff like neovim and CoC/LSP too.
And yes, nvim is perferctly suitable for Java and maven with ctags/ripgrep/fzf etc. plugins
41 comments
[ 3.2 ms ] story [ 77.2 ms ] threadDoes anyone else feel vim clumsy like the author? I'm trying to understand how one could accidentally lowercase a whole buffer, or trigger scary messages or open unrecognized menus. Not condescending, just curious. I find the q: thing relatable, but not the rest.
[1] http://www.youtube.com/watch?v=TEBMlXRjhZY
sorry what is this? exaggeration?
Perfection is not particularly attainable, or necessarily the point. Nor would it be that fun, I think? It's nice to have some aspect to improve upon. See this Casals quote:
> A reporter asked Casals, "You are 95 and the greatest cellist that ever lived. Why do you still practice six hours a day?" He answered, "Because I think I'm making progress".
So, sure, there are probably things you can learn, but e.g. I'm much more about "I think it should be THIS way so how do I make it do that."
Then again, I'm an emacs user.
Part of the issue is that operating systems have gotten more advanced and more standardized since Vi and Emacs were originally built. However, there is the case that UI designers have learned a lot over the decades. I like Emacs as well, especially when I am doing sysadmin work. However, I have to admit that it is not always intuitive. And even Emacs is more intuitive compared to the modal-nature of Vi.
The few features you really need to know for VIM are mostly in `:help motion.txt`. Knowledge of other features is obviously helpful in actually editing text, but being able to navigate well should remove most of the bottlenecks, especially considering how most VIM commands take motion into account.
I feel it’s worth mentioning that there is a sense in which I think it might be a bad idea. It could be that you’d now be fixating some value that may be optimal right now, rather than benefiting from future improvements to the default settings. But it all depends, of course, on how close friends you plan to be.
I finally jumped the gun almost a decade ago because I had too many Electron apps for my cheap laptop to handle and had to scale down to be able to get anything done without freezes.
At first the modal editing was difficult but it clicked immediately and these days I'm handicapped in normal typing. I still type vim motions by accident in Libreoffice which is the last program I use that doesn't support modal editing. Lately I'm getting around that by typing in markdown and using pandoc to convert it to `.odt` or `.docx`.
> every possible extension you already need
In Vim land the first step isn't to install an extension, it's to create a keybinding. It can be as simple as a one-liner, to a shell script or even command-line tools. You can run it on the filename, the file contents, or the selection. The only limit is your imagination and experience. You don't really get it yet because you're conditioned into thinking the way you're used to, not how it could be done.
It has nothing to do with looking smart, I don't care what others think. Could it be your own coping mechanism for feeling dumb about not being able to use it?
Learning modal editor - vim, nvim, emacs is like skiing or snowboarding. For anyone uninitiated this whole endeavor may seem dumb - you have to spend so much money, time and effort, so you can just descent from a mountain peak to its base on a piece of wood? Absurdly bananas.
Some may even try hitting the greenest, flattest, most beginner-friendly slopes with great confidence, only to find themselves face down in the snow minutes after getting on the lift. They try again. Sometimes, falling for the fourth or fifth time reinforces their belief that it's really is dumb and they just quit at that point.
Some newbie skiers, after a few successful runs, get overly excited and head to the lift for the steeper slope, only to regret their decision. If falling all the way down doesn't make them quit, they may eventually start enjoying it.
At some point, they'd gain so much experience - their movements become smooth and graceful, their speed intimidating. Suddenly, they'd discover an enormous, indescribable feeling of joy. There's so much tacit - emotional, mental and physical enlightenment that is almost impossible to convey to another soul who's never experienced it or rose to that level.
Then there's a spectrum of differences - some still fall all the time yet enjoy it nonetheless, and they enthusiastically discuss with other beginner skiers how awesome they feel. Some, after mastering the most difficult carving techniques, somehow forget their own beginner's journey and become apathetic toward rookies.
So, then why ski [vim] at all? Well, it is truly one of the most efficient, fastest, healthy ways of getting back to the base [dealing with text]. But most importantly it's tremendously fun. Often, in quite indescribable ways. I'm afraid you would never understand the appeal until you do try it. But even then, it's never guaranteed you'd find that thrill; then maybe skiing [vimming] isn't for you. Even though these activities literally for everyone (unless they have physical/mental barriers).
I honestly can't take seriously any programmer who doesn't know the basics of vim - doesn't that suggest they've never used sed, less, or read through man pages? Have they never had to ssh to a remote machine in the terminal? I do though get it, when people say "I tried it and ain't for me". I suppose, it just means they've never hit the spot that inspired them to keep going.
"I don't understand something and instead of asking nicely I decide to throw a tantrum and offend people". Why do you think it's appropriate to say things like this? Did I or any other vim/emacs/whatever user forced you to convert to their editor of choice?
I still have to look up how to do things I rarely do (like insert the contents of another file at the cursor position). And I don't really use many (if any) of vim's intermediate features, let alone advanced ones.
I've tried various ways to get more fluent, but nothing really stuck or kept my interest. This has always annoyed me a bit...
There's a lot in Vim, and there's no requirement to be a tech maximalist. Settling at core features is not being a noob.
I'm on Sublime right now. I like it a lot less than vim, but it's far less cryptic. If I need to tile four documents and move text around, I can do so trivially by dragging, without needing a PhD in vim esoterica that I would immediately forget the next day.
There is also a very popular plugin for neovim that shows a popup with possible keybinds and descriptions whenever you begin any keybind: https://github.com/folke/which-key.nvim
I've been using the LazyVim <https://www.lazyvim.org/> neovim setup and a handful of extras, but not too many. I still have to look up some esoteric stuff, but for the most part, it's completely natural.
And for the first few years, I was a hardline keyboard-only absolutist, but lately I've been using the mouse where it makes sense, and sometimes it does.
(MacOS, iTerm2, neovim, lazyvim, love this combo)
The only times I use "precise" movement commands like that is when I'm in the odd situation of having to ssh into something from my phone.
For example,
> I frequently opened this by running q: instead of :q, and didn’t know what I had done. Now I know:
But you still haven't fixed the typo-prone keybinds! And you still haven't set up a way to get this information so that next time something unexpected happens you can open your log of commands and see exactly what you've done and decide on the spot if you need to fix it. So you'd need to wait for the next chapter of the "let's read all the manuals" quest to when discover the issue
> Digraphs are an obscure feature for typing obscure characters. For example, you can enter “½” in Insert mode with CTRL-K 1 2. There’s a big list in :digraphs. I don’t use this much, except for typing fractions, but I use this more than I thought I would.
Of course, why would you commit that big list of obscure chars to memory??? The proper interface would be an avoidable visual feedback character picker so that if yo don't remember the "1 2" sequence you can even search for "fractions" But at this point, why bother with a bad vim component when you can invest in a more general symbol input solution and use it in vim and everywhere else.
I followed the link where it says:
> Q Repeat the last recorded register [count] times..
> {Visual}Q In linewise Visual mode, repeat the last recorded register for each selected line.
That's a surprise, I have both in my config since my time on Vim but I didn't know they were implemented by default in Neovim. I guess the maintainers read the same article I did many moons ago.
To this day stuff like "3dw" and "d}{{[P" are just second nature. Very much enjoying moders stuff like neovim and CoC/LSP too.
And yes, nvim is perferctly suitable for Java and maven with ctags/ripgrep/fzf etc. plugins