I had a powerful epiphany a few weeks ago regarding the idea of choosing the right tool for the job.

A few weeks ago, I virtually attended NeovimConf2023, an annual conference of all things Neovim. It was amazing to see some of the speakers talk about how they use Neovim, plugins, and custom settings. I’ve always been a sucker for productivity software and “life hacks”, so this inspired me to create my own custom Neovim configuration in Lua. I’ve been using the Neovim “distro” called NVChad, which has a lot of built in plugins and configuration settings so that you can use it for various tasks like coding or editing files. I would highly suggest this “distro” if you are just starting out.

My main goals for creating a custom Neovim configuration were:

  • Simple settings, a good theme, some basic keybindings.
  • Lazy plugin support, only loading the plugin based on specific conditions like file type.
  • Take notes and reference existing notes currently located in an Obsidian vault.
  • Have custom templates for things like daily notes, daily Bible study, etc.
  • Ability to code Python files easily with all the basic features of an IDE.
  • Have my config backed up locally and in Github for other machines.

Doesn’t seem like too tall of an order, right?

I spent most of a week creating this config and almost got it close to where I wanted it… But then it hit me. “Why am I doing this again?” It just stopped me in my tracks. “Why am I forcing myself to build a config when I don’t need to? Do I really want to put time into this? What will it gain me?”

The config was going well, but I did run into a few issues. For example, Auto Completion via CMP was just not having it for Python files. I spent so much time researching this issue, trying other things in my config, but I could not get things to line up. When it came to using the Obsidian.nvim plugin, I had a hard time getting CMP to select and link existing notes; turns out that I have to define every keymap through trial and error in order to get it working “as expected”. Getting a new file created and template loaded was a little bit of a struggle. These small issues that could be fixed by someone smarter than me built up quickly and the frustration was getting real.

I just suddenly stopped and started thinking about it, then I started thinking this same thought about other tools, operating systems, phones, laptops, tablets, etc, basically my entire tech “life”.

I’ve used Vim/Neovim for about 2-3 years to do simple file editing in Linux or even writing a few blog posts. It’s been a fantastic and powerful tool once you get past the learning curve; Vim motions are pretty amazing. However, I used Obsidian for notes and VS Code for all things PowerShell and Python.

But now that I think about it, what was wrong with my existing toolset? Was Obsidian or VS Code really that slow or terrible? Why did I need to start searching for new tools in the first place?

Turns out, there really wasn’t anything wrong at all. I had been subconsciously lured into the excitement of a new way of doing things. We all get this way sometimes I think. I know that there are some websites I would have never known about, games to play, apps to try, things to buy, etc, without first reading about them on Reddit or seeing them on YouTube.

My Macbook Air M1 opens and runs both Obsidian and VS Code extremely fast, so it’s not slow. Neovim is not any faster at opening or running compared to those apps. I never had issues with extensions or plugins in either Obsidian or VS Code, neither app has ever crashed on me.

There is nothing wrong with trying out new apps, tools, operating systems, etc, but I believe that it’s important to face reality and use what works best for you. It’s important to not be on a team or side just because it’s popular or cool. I think it’s so easy to watch a video on YouTube, read forums or a subreddit, see people on the Fediverse, and think that you have to use something just because they do. Guess I’m guilty of riding the hype train …

Neovim just doesn’t work for me as a single, end-all tool that I think can do everything in. It’s a fantastic file editing tool but I just don’t feel like it’s the right tool for the right job when it comes to coding and note taking. There has been way more time put into the setup and configuration of the app versus actually using it, which then makes it a chore. This makes it more of a hassle and less of a tool.

What works for me? I’ve stopped using Neovim outside of editing files in Linux and have gone back to using Obsidian for notes, journaling and Bible study. The one thing that has changed is that I have swapped out VS Code for Codium. It’s basically VS Code without all the Microsoft trash in it.

Obsidian was already setup to my liking, but Codium literally took 2 minutes to setup. Install the Python extension, set theme to Kanagawa Dragon, set the font to Victor Mono, increase the font size, done. Obsidian did take a little longer to get to a sweet spot with community plugins, but it was nowhere as difficult as Neovim was. The small amount of time spent setting these apps up convinces me that these are tools to use and not reconfigure every other week.

I’m still enthused that other people use Vim or Neovim exclusively, or that they have customized it to their personal workflow, but this is what works for me. It’s simple, fast, and it works mostly out of the box, which is what I want. After working in IT for 15 years and breaching the ripe age of 40, I like it when things just work.