I switched to Vim – and it took me only 6 years to learn it
emanuelcepoi.com
emanuelcepoi.com
I love vim, not because of some huge speedup, but because it just feels good. It's like being in a workshop where all the tools are in just the right spot. I figure if I'm going to spend 8 hours a day coding I want it to feel really nice. And it does.
I tried other editors, it didn't feel right, I didn't force myself to continue using them. My advice if you're trying vim is the same... if it doesn't feel right, if it doesn't feel like the tool works for you, look somewhere else.
I'll admit my FOMO was what originally got me to start learning vim. I still barely know the basic motions but I'm starting to think it could lead to a productivity boost once I get over the learning curve.
There is a quote from Apple UX designers/engineers about testing the keyboard vs mouse for doing stuff in the OS.
Apparently the test subject always reported that they keyboard-driven controls were faster, but the timing measurements showed that mouse were faster.
Chances are the keyboard feels faster, rather than being actually faster.
I'll add another point of view I developed while observing many LaTeX vs Word or Excel vs SomeObscureCoolThing(tm) threads: people will happily waster thousands of hours over many years to learn vim/emacs/LaTeX/SomeObscureCoolThing but will plain refuse to spend 20-200 hours (again, over many years) to properly learn how to use Jetbrains' stuff (IntelliJ etc) or Word/Excel/PowerPoint (or the LibreOffice equivalent) or some other mainstream tool.
I've seen countless time web-apps being developed in months that could have been an excel sheet developed in a week. People wasting weeks on their documents because after a software update LyX would not open the documents anymore. People (particularly in university) being super-stressed, wasting precious time and occasionally missing deadlines because they waster too much time fighting LaTeX to align tables or images because they refused to properly learn how to use Word (or the LibreOffice's equivalent, writer).
And don't even get me started on the plumbing of various tools together. Most vim/emacs user (and I say this as an emacs user) can only integrate other tools as long as there is some copy-paste-ready code, but they can't go much further.
So... Yeah productivity boost is incredibly subjective. And chances are it's also fake.
It's not too much of a big deal (meh) but I'm annoyed by the fact that all this isn't even acknowledged.
Likewise, mandating a file per each class in Java is no big deal on the surface, but having to create and juggle so many files for small classes feels terrible to me, so a seemingly small detail turns me off the language.
I think we should examime these feelings, because they ultimately drive (some part of) our behaviour, and I'd guess they're not just random preferences but are rationalisable.
Congrats you missed the point entirely and provided me with a perfect example case:
Have you ever spent a considerable amount of time learning Excel, the very same way you did for python?
It’s very likely that excel is perfectly adequate and not buggy at all, you’re just and ignorant (in Excel) and can’t go further than “hacking a spreadsheet together”.
So, have you spent time properly learning other tools or are you one of those everything-expect-what-i-like-sucks ?
To get back to my point, working with spreadsheets feels bad (from my experience) because I have to juggle all the things mentioned above. In my favourite programming environments, mistakes of this sort are generally directly evident in the form of errors.
If I had more spreadsheet experience, I would get better at avoiding these mistakes. But I choose to use Python, where they are handled by design.
And anyone who has ever played MMO or RTS games will know that early on, quickbar are faster and more precise than shortcuts, but later on clearly, no one mouse-click if they want to stay competitive.
Easy check proving absolutely that it is broken:
1. Create a new wails project with `wails init -n myproject -t svelte-ts` 2. Create a svelte file and use a function defined in app.go 3. Run `wails dev` to compile and run the app 4. Delete the function from app.go
Result: The svelte file which imports the function generated from app.go doesn't show any errors even thought the function doesn't exist anymore.
So use VS Code or Sublime which actually work with LSP without issues.
Don't use broken tools for your work.
Don't use a tool that's broken for your work. There are plenty of bugs in other editors
I'm not a great vim user by any means, but it feels comfortable & nice for me at this point. Vim is forever part of the virtuous cycle, forever letting you mix this idea for doing something with that technique. It fits my mentality fantastically well. Computers rarely have suchnfantadtically well equipped sandboxed, and even more rarely is software so module & flexible, so readily recombineable.
And I just absolutely adore being in a world where anything can be scripted, where every single ounce of power I get compounds with and works with every other bit of power I've accrued. Where everything fits together, and is useable on the fly, or usable when trying to do more elaborate crafting.
One little recommendation I would have given my old self, expand the power domain. I was a little slow to really get into scripting. VimScript was kind of ok but also for me personally kind of ass, but I should have leaned in more. Now a days NeoVim has excellent Lua support built in which is great, and I really really really love Denops which lets me use a lot more tools and libraries and ecosystem that I know & that are more mainstream (JavaScript). https://github.com/vim-denops/denops.vim
This is totally off topic, but the one thing that's not in any way at all modular or composeable is that vim assumes there's only one screen, only one output. It's been almost a decade since Tarruda blogged the idea of Smart UI where multiple apps could effectively start sharing a headless neovim, where there could be multiple different terminals at once, but there's been (afaik) no progress decoupling the core of vim from rendering into one and only one screen, which is my transcendent vim dream to expand beyond. https://tarruda.github.io/articles/neovim-smart-ui-protocol/
Nvim doesn't support all LSP features such as anchor links in hover documentation. Looking at you rust analyzer LSP.
> We don't need Neuralink... We already have Vim.
This guy is so funny !
What do I gain by instead using VSCode (or any other IDE)?
I tried it, and it looks complicated, with a lot of keyboard shortcuts. At the end, it requires going through the same steps of creating virtual environments, dropping to terminal if needed, etc.
I’m not a programmer.
But I used neovim for a year at work. I write Python. I can totally see how you can live in neovim for languages like this. But I missed a proper test explorer and debugger though.
I don't think I'd go back to VSCode though. Either JetBrains or neovim. VSCode is in that awful middle ground spot where it's great if you are tying together tools and extensions anyway but if your whole suite of tools is supported in JetBrains products, I'd rather use those. Or use the tools on the command line and stick to neovim.
That said, the article focuses too much on the fact that using Vim makes you look cool rather it being a good tool overall. Sure, quick and precise navigation is a good benefit of using Vim, and it is superficially impressive at first glance, but the real power of Vim comes from its terse command language, which is something the article does not mention. There are so many tasks that I can easily do in Vim that would take minutes to hours in other editors, and it is all due to the command language. I guess my point is that Vim doesn't just look cool and there's more going on than what you superficially observe looking at somebody else's screen.
Being able to view images, read pdfs, and have html based components from extensions is really nice, as is intermixing terminal tabs with code tabs.
I simply don't think that the bottleneck for doing my job is how quickly I move the cursor around a document. Or that it makes me write better code in any way.
And because it made no sense to me to have a modal editor.
Now I use vim mode everywhere is available, also in Google Colab and in Firefox.
At the beginning, you people shouldn't waste too much time editing vimrc. I admit that some plugins are exceptional, like startify, markdown, vim plug etc
Wish I could write google docs in vim, or for google docs to have a good markdown import/export so there could be a bidirectional pathway to producing them in the terminal.
The trouble here is that even though the productivity will eventually increase, the learning curve will take too much of a tool. Yet I'm determined to give vim a solid chance soon once my current projects are over.
This is how I use vim. It’s great for quick edits and ssh boxes but I’m not a fan of maintaining all the plugins and settings manually so I have a barebones vim setup.
I don't need to turn vim into an IDE, and nor do I want to. However VIM is an amazing tool that's worth learning on its own merit. It's the text editor that's everywhere you need it to be, and I have never had an admin say "NO" to adding it into a box or environment to work/test.
You can get around with relatively little know-how. The problem is that knowing what you need to know is not easy.
Most tutorials, including the official one, focus too much on details and too little on concepts to get you bootstrapped.
Not everyone gets that it's a joke of course, but they're probably government bird operators and you are free to just nod and quietly back away.
Now I would just give ChatGPT a screenshot and have it describe what’s being used on screen
nice try
After trying out every text editor out there, I think sublime text (vintage mode enabled), VS code (with Vim plugin) and liteXL are the generally useful editors and provides a better user experience then vim and terminal based Vim variants. Even though I do not use Vim, my hot take is that if you are installing Vim plugins from the get-go you are missing the point Vim. Vim is not like the GUI editors and you should not attempt making it that way. That defeats the purpose of Vim and makes using vim more like an agenda.