
WOAH, that's a bold statement π€¨
Wait, I'll explain...
So you've clicked on the post, which likely means you are from other code editor ...
For further actions, you may consider blocking this person and/or reporting abuse
As you said, it's more about a mindset of efficiency (at least I feel the same). Great write up Shrijal. π
Yes, I feel the same. It could be VIM where you are efficient, or it could be any other IDE like JetBrains or VS Code. But at least you should give VIM a try.
I am thinking of learning VIM myself. I plan to start by having the VIM plugin installed in VS Code.
Starting out with the VIM plugin installed is a great way to begin.
Maybe, but I don't agree.
As far as I listened from others' experiences, the vim extension only gives a crap experience.
I know jumping straight into Vim can feel notoriously dangerous but hey, trust me! This is the best possible way.
Let me explain, why, I have, such a strong opinion.
To truly learn Vim, you need to commit to it fully, outside the familiar environment of VS Code.
Now the obvious obstacle ahead is your current ongoing work. You have a job. You are working on something. You can't just directly jump on a completely alien environment and get your job done, in time, being productive, without having knowledge and prior experience of that environment. And that's okay.
Take your time. Try vimming in a different workspace. Mayybe something like a hobby project? Which you have plenty of time to spend on? Why not share the time on coding while learning vim by writing code on vim?
Or maybe you would learn to be proficient in basics (of modal editing) first.
The thing is for getting used to with the basics of vim(just the basic writing, editing, saving and exiting), imo it's actually better if you start using it as a notepad replacement if you are currently running Windows.
Why? Because it is a much simpler, easy approach. It's like breaking your big problem into smaller parts, a relatively more doable way. You start using vim as your secondary note taking app. Then slowly the keybinds, the commands and the whole workflow makes a permanent place in your muscle memory. That ubiquitous text editor, will eventually go ranks higher becoming your go to quick note tool, and then someday your universal text editor.
Learning vim is a journey. It takes time. It also needs a great starting in the proper way if you don't want getting lost somewhere in a jungle of conflicting hybrid environment, messed up.
That being said, Vim or if more accurately said
Neovim
is inherently universal. Neovim is faster than vim. It takes less startup time to open than vim and you can use it for basic one line config file edits to coding a large software project, efficiently. It's so unique, it needs to be done in it's own way.And for getting the modern features like autocomplete, copilots, formatters, there are lots of plugins available in the ecosystem. The most beginner friendly way will be adopting a preconfigured distribution like LazyVim, Kickstart.nvim etc. to get started without initial config build up overhead.
This how you slowly & ultimately become one of them. The OG martian vimmers!
This is what I understand. What do you think?
@ddebajyati You hold a point. The thing is, if you plan on using the VIM plugin in any GUI IDE, just use it until youβre comfortable with the basic VIM motions, I'd say. Most folks never try VIM because of their fear of the terminal, TBH. At least with the plugin, you can experience what surface-level VIM is like.
If I were to recommend someone to start with VIM, Iβd suggest going with raw (Neo)Vim for sure.
Yeah kinda true. People are scared of the terminal.π
For me it was really exciting and interesting because it felt like I am some cool hacker! π
So true. Even more, if you have that green looking font for your terminal. π
Thank you, @anmolbaranwal, buddy. βοΈ Yeah, it's the mindset that makes the difference. For me, with VIM, everything is at my fingertips, and there is no friction in the workflow.
I can 100% agree on this. I did not go for this book, I used the nvim default help pages.
Yeah, I fully agree with this. I feel that when I was starting out, I did look at the help pages, but not thoroughly.
totally agree. The help command is a game changer.
Although I do agree Vim is highly efficient, this isn't exactly true either:
From my own observations as a Vi user since 1994 and someone who has sat next to hardcore Vim & Emacs coders since 2000, veteran VS Coders rarely touch the mouse, and I hate to admit this but they are just as productive as Vim coders, if not more so with the help of Copilot. By far, the #1 prerequisite to being a 10x dev is your proficiency at the language you're coding in (and of course your IQ), not the tool you're using :-).
For sure, being super efficient in anything will take you far, and it doesnβt have to be Vim. That said, for most folks, plain VS Code might not be the best option, and some may not even know that something like VIM exists to give it a shot at least. But at the end of the day, itβs all about what works best for you.
I completely agree with this. Goes without saying.
I think this is a great article. The only push back I have is on efficiency. Efficiency is highly overrated in my opinion. There are better mindsets to spend time contemplating as a developer or engineer. A few would be security, maintainability, and sustainability (carbon footprint). Sure, using a tool like Vim can help with these, and that is one of the reasons I think it is a valuable tool π.
Yeah, VIM is just so valuable for so many things, you know, especially once you get the hang of it.
So for you it started with typecraft. In my case, it all began with Elliott Means (Dreamsofcode).
Man, ngl that aesthetically pleasing Neovim rice made me get out of my comfort zone from vscode to trying something new, exciting, FANTASTIC!
Learning vim has rewarded me in many different ways. The most important one was actually being able to get what I want by digging into the Documentation rather than being stuck in the never ending vicious loop hell of prompting ChatGPT while GPT is giving really awful results.
I won't say "I don't use AI anymore". That would be an unbelievable lie.
But, what I mean is that - when solutions don't already exist, you get nothing valuable from Stackoverflow or AI Chats, then only way out is to READ docs. Learning Vim, Vimscript, and configuring Neovim has made me capable and get used to understand and get what I need from the Docs when building some project(which used to be very difficult for me at some point of time, I could never stands libraries without watching a tutorial from YT or prompting CHAT-GPT), without getting intimidated or scared.
Well, I would like to know where did you get the name 'vim' for the very first time. Was it typecraft or something else?
I had heard about it a few years back and mistakenly stepped into VIM once when trying to edit a configuration file. Like many others, I didnβt know how to close VIM, so I had to Google something as simple as closing an editor. It felt horrible, and I didnβt look back at it for at least a few years.
But then I got to know what VIM really is through Typecraft, and this long journey of setting things up introduced me to folks like ThePrimeagen and TJ along the way.
I use something similar to Copilot, but itβs called Codeium. I donβt use it very often, but autocomplete really helps sometimes.
VIM really introduced me to stuffs similar as you said, so it has definitely helped me in so many ways.
Great one sathi. ππ₯°
Thank you, Aayush βοΈ
Good article, really enjoyed reading it.
I honestly envy you.
I'm oldβI started writing code in the '90s. In the early 2000s, I was an early adopter of Eclipse. It blew my mind how a GUI could help me write code better. I have ADHD and dyslexia, so achieving fluency in projects with hundreds of classes always felt like a real challengeβuntil I started using IDEs.
Back when I started, Vim and Emacs were the only real options. I customized them to suit my needs, but I never reached full satisfaction. Around 2009, I transitioned from software development to design verification and had to go back to using Vim and Emacs. This was after six years of watching IDEs evolve rapidly. It was a nightmare. I felt like an idiotβtrivial tasks took me forever because I couldnβt feel in control. I couldnβt remember the massive class hierarchy, the instantiation chain, or even where certain functions were and what their signatures looked like. My dyslexia and ADHD became serious obstacles, and I even started doubting my abilities as a developer.
So, I toyed with the idea of writing an Eclipse plugin for Specman. Luckily, a new product with the same goal was being developed, and I reached out to the developers, who gladly gave me a tester license. It turned out great for everyoneβdevelopers in DV quickly grew fond of it, and my company ended up purchasing multiple licenses. Most importantly, I regained confidence as a developer.
You see, tools are personal. As a minimalist, I really like VimβI wish I could use it. But for me, itβs more of a distraction. This post is just a reminder for you younger devs: thereβs no silver bullet, no one-size-fits-all solution. For some, Vim is great. But if it doesnβt work for you, you are not the problem.
@yoelp The comment really made my day. Thank you so much! ππ
Nice read! For eager beavers π try "LazyVim". It'll install all the IDE features you need for most languages.
I still use VScode, but Neovim is also very productive especially since I am big on Linux and the terminal and love to stay on my keyboard.
Neovim + nohup + tmux is just super productive! Also starship.rs/ and ZSH makes the terminal so much nicer to work in.
Thank you, @kwnaidoo βοΈ.
Yeah, starting with a distro can be a good option and is recommended by most of the fellows in the community as well.
Neovim + tmux is pure gold π€
Feels silly that I didn't know about nohup. Thanks for sharing this. Starship is super awesome, but recently Iβve started opting for the RobbyRussell prompt instead, as its Git features really felt like they were slowing down the prompt load for some reason. π€·ββοΈ
I have been a long time vim user (started using it in 2012) and really efficient at it. Currently my vim configuration does almost everything that vscode does.
And I don't think it makes me a better developer as such. 2 years ago I started using vscode and intellij idea because most of my colleagues used these, and I found that a modern IDE does boost productivity. I still use the IDEs with vim mode, because "muscle memory", and do most of my build / test / deploy stuff from the terminal -- but modern IDEs generally offer more convenience than vim.
Also, majority of the things that actually make me a more productive developer are not related to any editor. Here are some of the things that helped me boost productivity:
1.I got a lot of scripts to do a lot of stuff, especially the boring stuff.
I also got a lot of aliases (most from oh-my-zsh, some I configured myself), if I have to run the same command multiple times, I configure an alias for it.
Touch typing, I learnt the proper typing technique a bit late (~2020), but that was a good investment of my time.
Most importantly, I rarely use fuzzy search. In almost all of the projects I work with, irrespective of complexity and size, I take my time to understand the structure of the code I'm working with. I use grep a lot (and usually with regex). Plus I have my own set of scripts to actually parse large volumes code and answer more complex queries about the codebase.
Yeah, I understand you, itβs a matter of preference. For me, actually doing all the stuff in the terminal really feels like home. Making the switch from Vim to the terminal is just one key press away.
For me, though, everything that a GUI IDE does which I need is ported to my Vim workflow. I don't see any features that I miss in Vim which are available in other IDEs, and I plan to stay native to one thing. Things I use the most, I like to keep minimal and easy to switch, and so is my Vim configuration. The main killer feature for me is that thereβs nothing that requires me to start using the mouse in the middle of coding. Switching between multiple projects is just a few keypress, with tmux + nvim workflow with ThePrimeagen tmux-sessionizer script.
All of this is what is stopping me to use any other IDEs, at least for now.
IDEs with plugins help, but not much. Still, there are a lot of things where you need to use a mouse. If you feel like customizing all that stuff adding a keybind, youβre better off with something that doesnβt require it. As @ddebajyati has mentioned in the comment here, the incomplete "half VIM" might instead hinder mastering it or overall your productivity.
I must say, this is somewhat the same case for me. I did learn touch typing a bit late, and I feel Vim complements it, as you have to continuously type characters other than a-z, and all that really helps. Just a few days ago, I hit 98 wpm with symbols.
After reading this, I might have to try Vim sometime... I'm mostly a Python dev, though, so not sure how much more efficient this would be than PyCharm.
Give it a shot! I'm not familiar with PyCharm, but you should get decent experience using Python in Neovim if the LSP and everything are set up properly.
Imposter detected! π
Vim only for no ui-developerβ¦ run SwiftUI, Kotlin JetpackComposeβ¦
I'm not very familiar with these, though. For most of the devs, it shouldn't really be any issue.
Vim motions are also great for notes taking. I even build extension (LSP) for this github.com/iwe-org/iwe
Good one @gimalay, βοΈ I'll take a look at your plugin. Note-taking is definitely superior in Neovim. For now, I'm using Obsidian, but I plan to start editing Markdown in Neovim soon.
If you're interested, you can view my dotfiles here.
github.com/shricodev/dotfiles
Neovim all the way!
Hell yeah! π
IMHO, this reads up more like a CEO/CTO cheap excuse on "How we can save costs?, Yes let's write up an article on how to use VIM (which it's free), but with a free extension (too)"
CEO/CTO: OK, now give me my BONUS for saving money to corporate...
XD...
Not writing to oppose, in fact I really like the idea (and neovim) but I could not go thru the process of learning Lua (could not spend time as I had to learn much other things). Maybe later, I will try once more. Currently I am using vsCode with vim motions, zen mode, trying to be quite minimalist, using the same theme when I was using neovim, and think that it is (like) neovim, until I need to install an extension (and not trying to be much greedy here) :) and use the git commands (I sometimes write git commands on terminal but I use vs codeβs interface too)β¦ good luck.
Learning Lua was a small challenge when trying to shift, but it was only required to the extent needed to set up a plugin configuration. So, it didnβt take long. Some people I admire, like Anthony GG, follow vscode-vim approach, mostly using VS Code but knowing enough Vim to switch between VS Code and Neovim as needed.
So yeah, if thereβs no friction in your workflow, and you can build things faster in VS Code than in Neovim, I donβt see any problem. You can definitely give it a shot in the future. For now, try improving your Vim surface level commands muscle memory in the VS Code.
so what about debugging? VS code makes i a breeze to debug a nodejs program. can you do it in vim with the same ease/tools the vscode debugger provides? I have tried a bit of REPL to debug in terminal but it felt alien and clunky
For this, there is nvim-dap. It might not be very visually appealing or intuitive, but it gets the job done.
πΆYou may check out anytime you like, but you can never leave.πΆ
I can never figure out how to exit vim and get stuck there forever!!
This should actually be their slogan. Somehow, everyone gets stuck there first and forever.
Good to see a post on NEO VIM after a long time. π
Hope you liked it, @dhanush9952.