To Vim or Not to Vim
In this episode, we talk Vim with Allan MacGregor, director of engineering at Hopper, and Alex Smith, software engineer at Forem.
Jess Lee is co-founder of DEV.
Ben Halpern is co-founder and webmaster of DEV/Forem.
Allan MacGregor is a software engineer, functional programming advocate, and author.
Alex Smith is a software engineer at Forem.
[00:00:01] JL: Triplebyte is a job search platform that allows you to take a coding quiz for a variety of tracks to identify your strengths, improve your skills, and help you find your dream job. The service is free for engineers and Triplebyte will even cover your flights and hotels for final interviews. So go to triplebyte.com/devdiscuss today.
[00:00:19] RudderStack is the warehouse-first customer data platform built for devs. It is open source and built API first. So it is easily customizable and fits into your existing development processes. RudderStack’s multitude of SDKs, sources, and destinations make it easy to instrument, adjust, and route customer data from all of your digital touchpoints. Start building a better CDP for free today at rudderstack.com.
[00:00:50] AS: In my mind, it’s almost like having to know how to drive a stick shift car sometimes. Most people don’t want to or need to, but it is nice to have that skill if you do have it.
[00:01:13] BH: Welcome to DevDiscuss, the show where we cover the burning topics that impact all our lives as developers. I’m Ben Halpern, a co-founder of Forem.
[00:01:21] JL: And I’m Jess Lee, also a co-founder of Forem. Today, we’re talking about Vim with Allan MacGregor, Director of Engineering at Hopper, and Alex Smith, Software Engineer at Forem. Thank you both so much for joining us.
[00:01:31] AS: Thank you.
[00:01:32] AM: Thank you. It’s a pleasure to be here.
[00:01:33] JL: So Allan, before we dig into your love of Vim, can you tell us a bit about your coding background?
[00:01:39] AM: Yeah. Absolutely. I’ve been a professional software engineer for the past 13 years, mostly working on the e-commerce world and mostly working with PHP.
[00:01:50] JL: Awesome. And what projects are you working on at Hopper? Or do you have any personal projects that you have going on?
[00:01:55] AM: Right now, I’m working on a personal project, a bit of a microservice. It’s called siteguardian.dev, and it’s essentially all in one solution for SSL validation and monitoring. I’m doing that on the Elixir stack and language. Specifically, for that stack, I’m using Vim as my main editor.
[00:02:16] BH: And Alex, can you tell us a little bit about what you do with us at Forem and maybe a little bit about your background before you got here?
[00:02:26] AS: Yeah, absolutely. So here at Forem, currently, I’m working on a team called Team Creator Onboarding, and we’re working on the whole process of onboarding new users into the Forem world. So when a new person visits Forem.com and they want to spin up forum, that experience that they go through from point to point of, “Hey, I’m interested,” to, “Here’s my new forum standing up,” that’s what our team is working on.
[00:02:52] BH: Can you tell us a little bit about your background before you got here?
[00:02:55] AS: So originally, I went to school for finance, and after leaving school for finance, I kind of sold my soul, put on a suit, ran off to New York City and kind of did the whole “Wall Street thing” for a while. So after becoming a little disillusioned and finding other passions, I kind of stumbled into the world of programming. And it actually started because I was automating a lot of parts of my Wall Street finance job in Excel using macros. And I was like, “The process of actually automating this stuff is more fun than the stuff I’m actually supposed to be doing.” So it was kind of this always this growing itch to do that type of work. So once I kind of left finance, I decided to try and turn that itch into a full-time approach. And depending on who I’m speaking to or who’s asking, I’ll sort of let them decide if I’m considered the “self-taught” or if I’m “went through a coding bootcamp”. And the reason is I won a scholarship for a coding bootcamp, but I landed my first software developer job the day the bootcamp started. So depending on who you are and how you feel about that, I did attend a bootcamp, but I also got the job before that. And I’ve had a few software engineering gigs before coming here to Forem.
[00:04:19] BH: Did you literally wear a suit every day?
[00:04:22] AS: I did not wear the jacket, but I had the attire. Yeah.
[00:04:27] BH: Is there such a thing as casual Friday in that industry?
[00:04:30] AS: There is in some places and it’s usually more like, especially during the summer, because it’s like for those who don’t know, there’s certainly a stigma of summers in the finance industry in New York City, where, especially on the weekends, the city is dead. Everybody’s off to the beaches, the Hamptons, whatever it is. So in the summertime, you’ll see a lot of like chinos, more casual shoes and a polo maybe on a Friday, depending on what role you in. If you’re a client-facing role, usually there’s no such thing as casual.
[00:05:04] BH: Yeah. I’ve never had a job that included formal wear. So I find that fascinating.
[00:05:09] JL: Yeah. I was supposed to speak at a conference earlier this year and felt compelled to like find business casual clothing and because that was the requirement and I had to just buy a whole new outfit. Anyway, we are here today to talk about Vim. And Allan, you wrote a piece titled, “VIM as the perfect IDE.” So you’re obviously a fan. Can you start us off by telling us what Vim is?
[00:05:33] AM: Vim as a score is a text editor, but it’s a very flexible, configurable text editor. So for a developer like me that loves to thinker with stuff, it kind of became like the number one tool in my toolbox. That’s where the idea of the perfect IDE title came from is it’s a tool or an IDE and a text editor where you can customize as much as I need. If I need a plugin, I can do it. And it’s something that is available in almost every single system where you find it. So Vim is kind of that constant tool that you can find.
[00:06:07] BH: And Alex, you’re also an avid Vim user. Can you paint a picture of what Vim looks like from your perspective and why you choose it over other editors?
[00:06:16] AS: Yeah, absolutely. So there’s actually a little story that brought me to using Vim and it actually starts with these roots in finance. So when I was first starting out in the finance world, in college, trying to land an internship, et cetera, going through a lot of trainings, programs to kind of prep for that, and the biggest tool of the trade there is Microsoft Excel. And one thing that the training programs, the teams that I was on really harped on is to never touch your mouse when you’re using Microsoft Excel. You should be able to have two hands on the keyboard at all times, and you should be able to do it fluently and fast. And at first, as I’m assuming it’s true for probably most people, especially in the early days of using Excel, that just seems very difficult. It’s a learning curve to memorize the keyboard shortcuts, but it got to a point where there was literally like if a senior analyst caught you touching the mouse, they would throw a mouse at you like, “Don’t touch the mouse.” So I got used to using keyboard shortcuts. And then fast-forward, and I start to do software engineering. And I was working with two of my mentors and they both used Vim. And one thing that we were doing when we were pairing is using a software called “tmate”, which basically allows you to share your terminal. This was probably three years ago. So these screen-sharing tools that are available today weren’t quite what they were back then. So it was easier to just use Vim because it was already essentially built into the terminal. So we could edit code on the terminal we were sharing and we could also run the code and do whatever we need on the console. Once I saw how fast they move, because you never touched the mouse, I didn’t need any convincing. I was already on this mantra of the mouse is slow and that came from the Excel days. So soon as I saw it, I literally just ran through the like built-in Vim course that kind of exists in Vim itself, ran that a few times, like every morning I would come in and do that first. And then it only took me about a week, maybe two, to kind of get up and going. And ever since then, I haven’t looked back and every other editor I’ve used for whatever reason, may it be like Atom, Sublime or anything, the very first thing I do after installing is installed a Vim plugin. I always have these Vim keyboard shortcuts and I’ve even mapped the same shortcuts to like other programs sometimes just because I’m so used to it.
[00:08:55] BH: Do you think you’d be using Vim if not for the specific background with Excel and what you learned there? Is it in your personality to find tools like this or is it because you came through this specific path?
[00:09:07] AS: I think I definitely would and it’s simply because I can’t even overstate how blown away I was by how fast some of these engineers can move within Vim. And you just cannot do that same level of speed with a mouse. So I’d like to think if I still saw that same speed and just efficiency of working, I still would have gone through the effort to really learn this.
[00:09:32] JL: That’s awesome. I was actually going to ask, like, how did you get started with Vim because as a fellow bootcamp grad, that is definitely not something that they start newbies on.
[00:09:42] AS: Yeah. They definitely don’t. I went through that same thing and I actually was familiar with them by that point. And some people saw me kind of using it and had a lot of questions and I kind of felt bad because sometimes I felt like in my experience, there are certain stigmas of people that use Vim or choose not to. I’m sure people out there have seen the memes on both sides of that debate. I have been on both sides of that debate, both poking fun at myself and also being a fan of it.
[00:10:15] JL: So aside from the speed that Vim can give you, let’s get into more details on the features that you can really use through Vim that you can’t find in the alternatives.
[00:10:26] AM: I guess the key there is the flexibility. For example, between side projects or a blogging I’m working either on PHP, on Elixir, Scala, the write on and markdown, and having a tool that I can comfortably and confidently work on all those things without actually having to switch that has the ability for me to do interesting stuff, like get commands and pulling and pushing and Ruby and branches all directly from that same tool, it’s really, really powerful when you really think about it, right? You don’t have to waste a lot of time, a lot of effort. It’s a little bit more than just the speed of being able to do everything with the keyboard, but just having that a single focus of context, right? I don’t have to leave necessarily Vim for doing a lot of this stuff. I have access to the terminal. I have access to a Git history, Git logs, to whatever tooling I need in order to do the development that I want.
[00:11:26] AS: I would definitely echo that sentiment. And I would add two things. One is like the reliability and consistency of them. At least in my experience coming up, a lot of people would know Vim in some capacity because at some point in their career, it was basically the only option. They would SSH into some production level server. Obviously they could not necessarily install full-blown Atom on there. They’d had no choice but to use them. So the fact that you can always fall back on that at a bare minimum in just about most setups you’ll encounter is nice. I find it’s almost like having to know how to drive a stick shift car sometimes. Most people don’t want to or need to, but it is nice to have that skill if you do have it. And secondly, I liked that Vim out of the box is just very slim. It doesn’t have all the fancy things in it and you can easily customize it to your fit and your needs as opposed to on some of these IDE sometimes, you’re kind of installing plugins that are modifying the default behavior of that IDE, kind of covering it up to fit what you like. And with that comes a little extra blow, whether that’s size on your machine, performance eating up CPU resources, et cetera. So I like that Vim is just sleek and to the point and you can make it how you want it.
[00:13:09] JL: Join over 200,000 top engineers who have used Triplebyte to find their dream job. Triplebyte shows your potential based on proven technical skills by having you take a coding quiz from a variety of tracks and helping you identify high growth opportunities and getting your foot in the door with their recommendation. It’s also free for engineers, since companies pay Triplebyte to make their hiring process more efficient. Go to triplebyte.com/devdiscuss to sign up today.
[00:13:34] RudderStack is the warehouse-first customer data platform built for devs that builds your CDP on your data warehouse with support for cloud data warehouses like Amazon Redshift, Google BigQuery and Snowflake. RudderStack makes it easy to collect, unify, transform, and store your customer data as well as route it securely to a wide range of common, popular marketing sales and product tools. Start building a better CDP for free today rudderstack.com.
[00:14:06] JL: Okay. So clearly you’re both Vim diehards. So now I have a challenging question for you. Why would you tell someone not to use Vim?
[00:14:15] AM: I guess the flexibility doesn’t come for free, right? There is definitely a little bit of a learning curve and a little bit of tweaking in order to get the tool to do what you want to your liking. It’s definitely a bit of an investment. And in that sense, I think in most cases it’s worthwhile. The other scenario where I can think that maybe like a more, I don’t know, formal IDE would make sense, something like IntelliJ is depending on what kind of application and framework you’re working, right? So maybe if you’re working on an extremely complex, heavy Scala application, something like IntelliJ, and having a little bit more of additional tools and code complete, it’s worthwhile just because it helps you navigate the complexity of the application. So in those circumstances, it’s fair to have the conversation that, “Hey, use the right tools for the right job,” right?
[00:15:09] JL: Sure. Have you found yourself in a situation where you’ve had to do that yourself?
[00:15:13] AM: Yeah, absolutely. So at Hopper, a lot of the development, a lot of microservices, fairly complicated is using Scala. So in that particular situation, I’ve found a lot more value from leveraging something like IntelliJ, rather than sticking with them. Now that’s not to say that I’m not using Vim for like side projects and different language and stack, but for that particular reason, just having access to some of those tools that are not as robust than Vim. It’s a good consideration and it’s a good thing to keep in mind.
[00:15:45] JL: Alex, what is your biggest counterargument to using Vim?
[00:15:48] AS: I think it mostly depends on if the investment is worth it. Because it definitely is an investment. So usually like when I first started out, I didn’t think the investment was worth it. I was already sort of drowning and learning, so to speak. I did need to add keyboard shortcut memorizations to the already infinitely growing list. And the second thing is, and this one I’m on the fence about, but at some point it’s not as necessary anymore, like much of software, whether it’s in the engineering side or just more on the consumption side of it, these days, computer hardware CPUs can run more software cheaper. So running a full-blown IDE no matter what level it’s at is really not that big of a deal as opposed to 10 years ago, that was a huge deal, and that’s a lot of where these kind of terminal-based editors were starting from because it was just minimal resources used to run that. Now the resources are cheap. Why hurt yourself with something that’s a little baseline when you can have all the fancy things built in? And I definitely think there is a sort of tipping point. There is a point where you could add so many add-ons and things to Vim that it’s so close to an IDE, that it would just be easier just to use an IDE out of the box versus trying to customize a Vim setup to get the same thing.
[00:17:23] BH: How does Vim keep up with the ecosystem? Like if a new external tool comes out, maybe the Elm programming language is launched, it has a lot of built-in browser extensions for formatting because that was a big deal in that language, just as an example, how quickly is Vim typically able to get support for new things versus other environments?
[00:17:46] AS: I think it actually starts with the community. Since Vim itself is just so slim, a lot of those developments are just driven by community-built plugins. So when something new comes out, it’s usually some sort of open source contribution where somebody makes a Vim plugin to support something else. Vim definitely, over time with version increments, will bring some of that stuff internally, but it’s nowhere near to the extent of how fast the plugin community grows.
[00:18:17] BH: And do you have any idea if it grows faster than VS Code or at the same pace or lags behind a little bit?
[00:18:27] AS: My intuition is that it lags behind. And I think a lot of that is part of, it’s almost like part of the Vim culture, like the point is not for Vim to be able to do all those things out of the box where in IDE that kind of is the goal. Right? Bring all those things natively inside. It’s not uncommon where like a plug-in becomes so popular. It just gets integrated into the original source code of the IDE itself instead of having to be this third-party add-on after thought. Whereas Vim, that’s not really a part of the culture, at least as I feel.
[00:19:06] AM: Yeah. I would agree with that and echo that. That definitely is more of a community-driven effort. And I would say by the tendency of who the core hardcore users of Vim are, there is definitely a tendency to lag behind. The only thing that I would add to that is that because of the nature of the tool itself, once that push or drive for Vim in that plug-in for the platform happens, the time from that initial kind of need to when a plug-in comes out is actually very short. I would say for lack of a better term, time to market for a plugin is a lot shorter and in a platform like Vim or Neovim versus something like Visual Studio Code and definitely something like IntelliJ or a larger IDE.
[00:19:58] JL: What are your biggest tips and resources to help someone get set up on Vim?
[00:20:02] AM: Really a good on top of my head, there is this website called Awesome Vim or Vim Awesome, if I recall the name of the website correctly, that has a lot of well-maintained plugins available. The best thing to do for Vim is just play with it. It’s fairly flexible. So it’s a little bit of a tinkering process in my opinion to get to a point where you feel comfortable. So it tends to be a bit of an organic thing where you start adding as you need. I don’t know if Alex has a little bit of a different experience.
[00:20:34] AS: No. I would definitely echo that Vim Awesome is one of my go-tos. I think I mentioned it a little earlier. I don’t know if it’s actually built into Vim itself or maybe comes pre-installed on Mac, but there’s like a built-in Vim tutorial, like you just type Vim tutorial in your terminal and it’ll walk you through like these lessons and teach you how to navigate up and down, left and right, skip words, replace letters. I was saying, I did that just every morning for like a week or two. And whether you want to memorize it or not, it starts to become like this muscle memory. So even if you don’t have this conscious thought of, “Okay, I need to hit this key to navigate this way,” your fingers just remember that I need to move this direction to match the thought of moving that direction. So that was a big thing. As Allan mentioned before, it’s a learning curve and I really feel like the best mentality is just to rip the Band-Aid off, except that you’re going to have a “less productive” week or two, knowing that you’re going to make up for that production once you’re over that investment.
[00:21:43] JL: Would you recommend Vim for code newbies or would you recommend that they not tackle it all at the same time in the way that you did?
[00:21:51] AS: I would definitely recommend it. I could see where maybe not doing it at the same time and I can see where for some people, depending on your learning style, it may not be the best. But at a minimum, I think some level of familiarity with it, how to just kind of move around or the common meme of quitting or exiting Vim, knowing how to do that I think is good because it comes up naturally. I’m sure people out there who have used Git long enough have run into, “What’s this Vim editor that just opened up in my terminal? What do I do?” So just a very elementary understanding of it I think is great.
[00:22:30] BH: Yeah. I’d appreciate if Vim were put in context earlier in terms of the role it plays alongside Git and terminals and pre-installed software just so folks know and they’re not scared when they run into it and also just told that this is actually a full-blown editor that people tend to kind of like if they’re into this kind of thing. Every software developer is going to run into Vim in some capacity and it would be nice if it was put into context for folks.
[00:22:55] JL: What would you say is the biggest competitor to Vim?
[00:22:58] AM: I would put something like Visual Studio Code at par just because it’s kind of in the same category. It definitely has a lot of adoption. And I guess it allows you to achieve a lot of the same things. The only main difference is that how widespread is Vim. You jump on a server, jump on a different computer, you’re going to have it. But in terms of like a developer tool, I would put Visual Studio Code.
[00:23:26] BH: Do you anticipate Vim kind of always being the standard for this kind of software development experience, Alex?
[00:23:31] AS: Yeah. I think it’s definitely going to be. There are a few things I think that exist in software engineering that despite the fact that there may be on the edge of more improved and enhanced alternatives, that the original version is just so ingrained into the community, the culture, the processes. I think at a minimum Vim is here to stay whether people like it or not. And I think what’s interesting as well when you were talking about the competition to Vim, it’s not only like it versus other IDEs, but the different “flavors” of Vim installations that you can do. I think that debate is very interesting. Some people prefer Neovim over regular Vim, over VI, and then they’ll compare it to eMac. And that part of the conversation is very interesting because I view it as like a spectrum. And at the left side of the spectrum, the bare bones minimum is like VI, no plugins, nothing, baseline. Then you can start moving up to Vim, some of these other flavors of Vim, then you add plugins, then you have these flavors that have all these plugins until eventually gets the other side of the spectrum, which is essentially like full-blown IDE, built-in terminal into the IDE, all of that enhanced browser tools. VS Code is in that direction. A lot of it, the IntelliSense products are on that side of the spectrum and where people fall and draw the lines I think is so interesting.
[00:25:08] JL: Where do you sit on this spectrum?
[00:25:10] AS: I try to stay as close to the bare minimum Vim installation that I can. I will say there’s one that caught my attention recently and last I checked, it was still in development, but I did buy it. It’s called “Onivim 2”. That one looks really promising. That’s like the first code editor where I’m like, “I could actually see myself making that my daily driver from a code editor sense.” And I’ve actually been meaning to fire it back up since they’ve made a lot of updates and see how that works.
[00:26:03] SY: Hi there. I’m Saron Yitbarek, founder of CodeNewbie, and I’m here with my two cohosts, Senior Engineers at Dev, Josh Puetz.
[00:26:10] JP: Hello.
[00:26:10] SY: And Vaidehi Joshi.
[00:26:11] VJ: Hi everyone.
[00:26:12] SY: We’re bringing you DevNews. The new show for developers by developers.
[00:26:17] JP: Each season, we’ll cover the latest in the world with tech and speak with diverse guests from a variety of backgrounds to dig deeper into meaty topics, like security.
[00:26:25] WOMAN: Actually, no. I don’t want Google to have this information. Why should they have information on me or my friends or family members, right? That information could be confidential.
[00:26:33] VJ: Or the pros and cons of outsourcing your site’s authentication.
[00:26:36] BH: Really, we need to offer a lot of solutions that users expect while hopefully simplifying the mental models.
[00:26:44] SY: Or the latest bug and hacks.
[00:26:46] VJ: So if listening to us nerd out about the tech news that’s blowing up our Slack channels sounds up your alley, check us out.
[00:26:52] JP: Find us wherever you get your podcasts.
[00:26:54] SY: Please rate and subscribe. Hope you enjoy the show.
[00:27:03] JL: Now we’re going to move into a segment where we look at responses that you, the audience, have sent us to a question we made in relation to this episode.
[00:27:11] BH: The question we asked was, “What are your thoughts on Vim?” Our first response is a voice recording from Romans.
[00:27:18] ROMANS: We don’t tell a painter which brush to use. So why should we prescribe tools for a developer? I don’t mind people using Vim, but I also suffer through pair programming sessions with a person using Vim extension for Visual Studio. My suggestion is the following. If you expect someone to help you at the same machine, find a way to temporarily restore defaults, disable Vim extension, switch work layout to qwerty, and the stuff that companies shoot mouse instead of forcing your partner to use your ergonomic trackball.
[00:27:49] AS: I love that sentiment. I think that’s pretty funny because I was literally telling a story how I got into Vim because the people I was pairing with were using it. I really didn’t have a choice there. In their defense, a lot of it was about the screen-sharing setup more than it was. They were not willing to use a different editor. It’s an interesting challenge though, because I know when I do like pair coding or screen-sharing and things like that, I’ll try to use an editor that’s just easier to demonstrate certain things, like it’s better when I can highlight code, especially during a screen share to say like, “This is what I’m looking at,” and click around because a lot of other people that I’m pairing with will end up doing that same thing on their side. Whereas as opposed to let’s say I was doing my own “thing” in Vim and flying around on the keys, it’s not as clear what exactly is going on in the code. Sometimes words just change, things get pasted and it’s not quite as clear. So I think it’s just a hard line to balance and it just depends on the situation at hand. And the part about the ergonomic mouse is hilarious. I love that.
[00:29:00] BH: You can definitely tell when a certain rough experience is coming through in someone’s anecdote.
[00:29:07] AM: Yup.
[00:29:08] JL: Okay. Our next response is from Yash.
[00:29:10] YASH: I really loved Vim and I love Neovim as well, but it wasn’t always the case because I was working some years ago with some developers using Vim and I didn’t understand why they were using it because it felt clunky to me, very old and an IDE in my mind was way better because it had more functionalities, more options. I was in a friendly fight with them, just trying to prove that my IDE was better and they were trying to prove that Vim was better. And one day I really tried it seriously to understand how it works and I fall totally in love. My whole workflow changed from that. And I had way more fun coding. I’m very happy about this change. That’s why I’m saying often when somebody is criticizing Vim and not really understand how it works, I’m always saying, “All right, maybe it’s not for you. Maybe you’re right, but you should at least try to understand how it works and then you can decide if it’s not for you.”
[00:30:18] AS: I’m glad this one was brought up because this seems to be one of the primary conversations these days when it comes to somebody wanting to try out Vim, especially as a daily driver. It’s like, “What about my plugins?” And I feel that the auto-completion is one of the big ones and it’s cool because they mentioned they found Neovim, which has a lot of the things that people have grown to love or get used to in other text editors like VS Code. But what’s also cool is as they mentioned the performance of these things, and there’s actually different flavors of it. I actually use YouCompleteMe, which is an auto-complete plugin for Vim. There are different ones. And what’s actually kind of cool is to understand and look at how the community has chosen to do auto-completion. It’s definitely one of the more computer resource intensive plugins on just about any text editor. And if you get one that’s a little easier on resources, it doesn’t work as well. Right? But to do that really swift auto-complete, especially if you’re working in a statically-type language. The things that like IntelliSense, IntelliJ can do like Java on the auto-complete is out of this world, and I could totally understand why. If someone used that, especially if they started on that, would just not want to give that up because it does just bring so much convenience to your workflow.
[00:31:47] AM: Yeah. To echo that, that’s one of the reasons why, specifically for Scala, I’ve decided to stick with IntelliJ because while you can have a level of code completion in IntelliSense and in Vim, it’s not quite to the level on the language like Scala or Java for the amount of that you can get from something like IntelliJ. So there is definitely a trade-off, but for most languages, you can get a lot of mileage from the existing tools. And as Alex said, you can play around with different implementations and different levels of auto-complete in order to get what works best for you.
[00:32:25] BH: Yeah. When I was getting into iOS development, I felt like Xcode kind of taught me iOS development as I went just with the auto-complete and stuff. You learn a little bit, but then you kind of lean on the auto-complete to give you some clues until you actually know what you’re doing.
[00:32:40] AS: I would add that I don’t know that there’s a way for me to possibly say this without coming across a certain type of way, but there is a part of me that takes a lot of pride in trying to keep those tools to a minimum. I try to stay away from like auto-correct tools or anything like that. And there have been times where it’s just like I spent more time than I needed to tracking down a spelling error, for example. But in that process of not leaning too heavily on plugins, I’ve gotten much better at just doing it “right” by myself. It’s just like a more raw experience when you take off the bumpers down your bowling lane, so to speak.
[00:33:24] BH: Our next response is from Matthieu.
[00:33:26] MATTHIEU: When I first started using Vim, I had a lot of insecurities about missing features that were in VS Code like Emmet, auto-completion, Explorer, and things like that. It turns out that Vim is significantly faster than any other text editor, especially on a lower-end machine like I have. So I had to like make a compromise that, “Will I have VS Code extensions or will I have a faster speed?” But turns out I was wrong. There’s something called Neovim, which is a work of Vim. It is like Vim with extra features and it has an extension called COC or Conqueror of Completion. And what this extension allows you to do is it allows you to have all the VS Code extensions right inside your Vim. So COC has a hundred percent LSP or Language Server Protocol support for VS Code. So that means any extension that you can run on VS Code, you can run it on Vim too, which is absolutely revolutionary and mind-blowing for me.
[00:34:31] AM: Yeah. I would agree with that. Try a little bit of everything, right? Try to see that it works for you, try to see what works for the workflow and for the type of project you’re working. I think that’s pretty solid advice.
[00:34:43] AS: Yeah. It’s the time old tale of, “Don’t knock it until you try it.” It also goes both ways though. I’m sure there’s some diehard Vim enthusiasts that could spend a little more time in some of these IDEs to understand more where they come from these days. I enjoy the back-and-forths when these sort of debates come up, mostly because I just feel there’s no right or wrong answer. So you always come out of it learning something usually. And when it comes to what’s better or what does it look like and things like that, there is a part where using Vim kind of feels cool sometimes. For example, somebody like my mother who is not very tech savvy, when she sees my terminal with Vim, that’s how she imagines code from like seeing the movies and such, like in a terminal, the code right there, it just has that little flare to it. Whereas the IDEs it’s like, “Oh, wow! That’s almost like Microsoft Word.” I wouldn’t say that, but there have been people say that.
[00:35:49] JL: All right. We have a written response from Shi. They wrote, “There’s a bit of a learning curve in learning Vim. I try not to learn everything on one go, but pick two or three shortcuts or key bindings that I want to learn at a time. Maybe write them down in sticky notes and put them on my monitor. Once I commit those key bindings into muscle memory, I’ll add another two or three tricks to learn. It’s a slow process, but worth it.” I don’t think we actually touched on this earlier, but how long did it take you both to be fully comfortable with Vim and have all that muscle memory in place?
[00:36:23] AS: I’d say it took to feel comfortable probably about a month, maybe two. I was kind of “up and running” after about two weeks where I was fully using Vim and not opening Sublime anymore about a month or two. And to that point of sticky notes, that’s actually a great approach where you kind of use a few key bindings a day. One thing that I explored and really wanted to get was how you can get these like silicone-type keyboard covers, especially for like the Mac laptops. You can actually get them with the Vim keys printed on it. And I actually had like the keyboard of the Vim key shortcuts pasted under my monitor. So I could see them at all times and how they’re laid out on the keyboard. And that was another tip that I forgot, but that definitely reminded me of that.
[00:37:13] AM: Yeah. From my experience, so around the same timeline, it takes a while to get used to, but once you do it becomes second nature.
[00:37:22] JL: Allan and Alex, it was great having you on today. Thanks for joining us.
[00:37:26] AS: Thank you.
[00:37:26] AM: Thank you.
[00:37:36] JL: I want to thank everyone who sent in responses. For all of you listening, please be on the lookout for our next question. We’d especially love it if you would dial into our Google Voice. The number is +1 (929) 500-1513 or you can email us a voice memo so we can hear your responses in your own beautiful voices. This show is produced and mixed by Levi Sharpe. Editorial oversight by Peter Frank and Saron Yitbarek. Our theme song is by Slow Biz. If you have any questions or comments, please email [email protected] and make sure to join our DevDiscuss Twitter chats on Tuesdays at 9:00 PM Eastern, or if you want to start your own discussion, write a post on Dev using the #discuss. Please rate and subscribe to this show on Apple Podcasts.