If I could go back in time and change one thing about my computing, it'd be to learn proper ergonomics and posture from the beginning and avoid the pain that came later. I often have to type slower than I can to avoid pain. I realize now that all the frenzy to get the ideas out as quickly as possible probably gained me very little time in exchange for a lot of pain. These days, a tool that might increase my data entry speed by 5% doesn't even make it onto the radar because my primary concern is my health and getting rid of RSI. Speed is antithetical to that. Interestingly enough, whether going full speed as before or in a more controlled manner like now, my actual productivity is the same.
I've used vim and emacs. I can't claim to be an expert on either, but I am somewhat comfortable with vim and it can be convenient for any unix straight out of the box. But I found it to be fairly overrated even with all these claims of boost in productivity. Just use Sublime Text in this day and age and use the spare time you would've had to learn vim and do something more useful.
Came here to make a comment about other utilities in the same vein...but the author already did!<p>> [4] Or, emacs. Or, really, any other tool that you 1) use constantly; 2) is almost universally applicable; and, 3) makes you more productive.<p>Nice to see consideration for other tools in a piece like this.
This is a huge thing I've been thinking about lately.<p>Very recently I was a pretty staunch advocate for IDEs and thought the whole VIM situation was crazy. It is unintuitive. It doesn't come bundled with lots of useful tools. It takes some configuration if you want nice things (e.g. file tree on the side).<p>Over winter break I decided to really commit to becoming productive in VIM. I stopped using VSCode and I stayed away from other IDEs, even as I was learning Java Spark and digging into some Python projects.<p>I didn't notice it at the time, but VIM has made me much more productive, even with my very minimal knowledge (I learn new commands even for basic things all the time). Ultimately, the fact of the matter seems to be that the keyboard->mouse->keyboard transition is <i>really</i> slow. Going to Visual Studio (I'm learning Win32 and I don't want to do that without IntelliSense) after ~2 months in VIM is almost excruciating. I'll be loading up the VIM plugin pretty soon<p>The long and short of it is, and my advice for everyone who asks is, learn VIM (and other command line tools) as soon as you possibly can. I have no loyalty to the UNIX philosophy or ecosystem, but take it from me, you'll be glad you did.
When I read articles about vi/vim being great for coders I always wonder how you deal with having to use the same part of your brain for writing the code you are writing and to "code vim commands"<p>I mean, I understand it's attractive to a programmer's mind to be able to do fancy 'replace the next 3 words with x' and so on, and compose them in vim's language, but if I am deep in an algorithm the last thing I want is to have to context switch to "programming my editor"<p>When doing editing tasks in a more visual as opposed to programmatical way, it feels more that my "coding brain" is free to continue working on the algorithm at hand while some other part of my brain deals with the moving of text around.<p>Keeping the right cursor key pressed for 1 second is a lot slower than doing some fancy move to the X word in the line, but if engaging my brain to create the composite "move to the X word" command takes me out of the "flow state" I am in, it is way way way more expensive in the long run. In the end what you want is to be the most productive, and the most productive could mean that you are using the editor less efficiently because the more efficient parts of your brain are busy doing something else.<p>Not sure, maybe somebody that started with vim as their first editor does not have this context switching issue, I personally started with emacs and remained with it and I have my emacs config full of hyper / super / meta / alt / control / shift shortcuts and tons of cool packages, but while I am deep in coding flow state I still use the cursor keys with minimal package help (outside of multiple-cursors and macros sometimes) to avoid getting distracted.
I'm a diehard Vim fan. I use Vi-motion keybindings everywhere. System-wide. In every single tool I use. I don't ever touch arrow keys. I don't need to. I rarely have to use touchpad. It feels empowering to be able to do things the way I do. I don't think anymore about how and what I need to do to get quickly where I want to be - I just intuitively do it. This is probably how controlling things with your mind would feel. The downside? I can't work using one hand anymore. It just feels weird.<p>Vim is awesome. It's not an editor - it's a lifestyle. It's telling the machine who's the boss. It's staying "in the zone". It's cutting through the code like slicing butter with hot knife.<p>So, one day I woke up. I realized that Emacs can be better Vim than Vim. Hold on. Before throwing stones at me do one thing: give an honest and heartfelt try to Spacemacs. I guarantee it - you will be amazed.
> let’s say it makes you 5% more productive
> It’s an extra twenty minutes a day<p>Author presumes 100% of programming time is spent typing/editing.<p>Is this really the case? I'd wager it's close to 10% for most people.
I moved to VIM (ideavim, vimperator) completely once I started feeling uncomfortable in the right palm.<p>Reducing the number of keystrokes per days is paramount to productivity increase for me, nowadays.
I can't claim to have ever "tried" to get into vim - in the sense of ditching my daily driver (Sublime/VS Code) and going 100% vim. I've done the vimtutor, I even know how to do basic text editing (cut, copy, paste, find-and-replace, visual mode highlight) in vim, plus some of those "magic" things where you can repeat an action multiple times (:2wi or whatever). And I'll happily fire up vim if it's something really quick, like making a list in a plain text file or something.<p>So what's kept me from going 100% vim?<p>1. Plugin/add-on support - I have no clue what's going on here. There's no clear guidance on what to use (vundle? pathogen?). I haven't really grokked how plugins really work - where do they come from? how do I search for them? where are they really installed? how are they organized in the install directory? do I need to care? etc (I'm aware this is all documented somewhere, and maybe I just need to make more of an effort). Whereas in something like Sublime Text there's an easily installable package manager that takes care of all these things for you. And if you really care to learn, you can drop into one of the packages and find easy-to-understand Python and JSON. Versus vimscript, weird config files and whatever else vim uses to configure things.<p>2. Multi-file support - Sublime has a Cmd + T fuzzy filename finder right out of the box. With vim (for a beginner) your choices are either: a) open multiple terminal windows with a single file in each, Cmd + Tab endlessly or b) open multiple files in the same editor and drop out of insert mode every time you want to switch files (way more keystrokes than Cmd + T or Ctrl + Tab; maybe there's a toggle file shortcut in Vim also). I'm aware that there exist plugins for fuzzy-file searching in vim also, but because of 1 I don't know how to find or install them.<p>3. Buffers and marks - I'm vaguely aware they exist. I'm not sure what they do and why they're important. Again, this one is probably on me rather than the tool itself.
> Most of the time, you shouldn’t use the Best Paradigm (TM) that exists. You should use the one that is good enough and works well in the language you are using.[3] Clever only gets you geek cred; conventions let you communicate well, both to others and to yourself six months later. That really cool pattern you learned that one time? You may never use it, and even if you do, the marginal gain probably won’t be that impressive.<p>Aren't these all reasons to not bother learning vim?
I find using Vim more natural when I'm spending time in the command line. I'm an entrenched Windows user but I love the power of the linux command tools.<p>Now thanks to the GNU Tools packaged with Git, you get Vim and OpenSSH as lovely extras. It's really nice to be able to switch back and forth between editing on Linux via SSH in Vim and then back in Windows.<p>If you're searching around and moving files via the DOS prompt, getting your daily Docker/Vagrant fix it becomes much more natural just to open Vim edit the file and close it.<p>Plus you can add the solarized colours to the DOS prompt and you get lovely syntax highlighting too.
Ignoring generalities. For me, there are clearly times vim is the more efficient tool. I find that to be more often the case than not. At a minimum, learning it allows me to think about things differently than the standard wysiwyg editors. These both make me a better dev. But ultimately, using vim makes me happy. That's what matters to me, and should matter to others as they pick their tools.
I've been interested in using vim and am not completely useless at using it, but I haven't quite been able to commit to it. The main reason is that I'm not sure it's any faster than using IntelliJs products well. Last time I mentioned to a coworker who is a vim user, that I was thinking if switching to it, he said he was thinking of switching to Idea after seeing me use it.
agreed, 100%. I used to be a GUI diehard. Then, I was told about emacs and became an emacs fanatic. But the difference between emacs and vi/vim is that you can count on vim not only being on any system anywhere, but behaving in almost the exact same way anywhere.<p>vim is timeless.