Eight Years of Neo/Vim-ing Got Me Here


Over 8 years of daily usage and I’m still surprised weekly with a new motion or capability.

In this issue, I’ll be sharing insights and tips on configuring Neovim, derived from my extensive experience. Let’s dive in!

Tips for Beginners (and Advanced Users!)

  1. Start Vanilla: Well not 100% vanilla, get yourself vim-sensible and start rocking VIm until you feel confident to move on. DO NOT copy other people’s config. If you must, make sure you understand every line! This issue is my attempt at sharing mine, and while you’re reading these lines, I’ve released a video going through everything if you want to go ever deeper.
  2. Use Kickstart.nvim: This setup by TJ Devries, a core Neovim maintainer, will get you started with essential IDE features, like LSPs, Telescope and all these Neovim goodies users can’t leave without. Get kickstart.nvim

Learnings from 8 Years of Neo/Vimming

I’ve been a Vim user for almost a decade 👨‍🦳.
These are the configurations and plugins I pretty much use daily, and would consider my baseline:

My keymaps Are simple custom bindings, like jj to escape and buffer manipulations. They make my editing faster, you can check them out, but bare in mind this is the most personal-preference-based config I have.

Core Plugins:
- LSP: I really don’t know how people code without these anymore. My LSPs
- Telescope: Hands down, the best plugin for Neovim, if you count in the speed added and the extensibility features it offers! My Telescope config
- Git: Instead of listing plugins, here’s video where I cover the what, why’s and how’s
- DAP: Debugging in Neovim, sounds fictional, but you can do it too!
- Lazy: My plugin manager of choice, removing friction, reducing loading times, and an overall great experience I never had with the alternatives. Lazy.nvimand a video I made about migrating to it.

Other Plugins are all listed here. Pay special attention to those starting with tpope and folke; the two godfathers of plugins 😉

A Configuration Blueprint

I used to run a 200 lines .vimrc. Since moving to lua a few years back, I created a maintainable strcuture:

- File Structure: I keep a main init.lua and a subdirectory named lua for mappings, editor options, and plugin configurations.
- Plugins: Separate files for each plugin under lua/plugins for easy access and tweaks. Everything’s referenced from my init.lua (or it doesn’t get loaded)

Noteworthy Plugins

Since Neovim is my editor of choice for text as well, I’m quite picky about how I organize things for writing blogposts, newsletters and other text based resources. I made a video about it but these are the main plugins use for text:
- Zen Mode + Twilight: Ideal for focused writing.
- Vim Pencil: Text wrapping.
- Markdown Preview: Because markdown is better looking in the browser :)
- GPT: Can’t end a list without at least mentioning one AI plugin, can I?

Final Thoughts

My Neovim configuration is a work in progress. At some point, one must admit this state is the new constant 🥲. Both because it’s constantly evolving to suit different needs, but also, I just can’t help it with ricing my system and environments (did I hear Nix?)

I hope you found it useful. Please reply with any feedback or questions.

Have a great weekend!

Whenever you’re ready, here’s how I can help you:

ESPRESSO FRIDAYS

Every once in a while I send hand picked things I've learned. Kind of like your filter to the tech internet. No spam, I promise!

Read more from ESPRESSO FRIDAYS

Hi friends, Tmux is a fantastic tool for managing terminal sessions, but it has its limitations. One major drawback is the lack of a floating pane feature, which can make navigating between different panes cumbersome and inefficient. Me frustrated with Tmux lack of floating panes while Zellij is killing it... Most users workaround this by creating new Tmux windows or panes, or by using hidden splits to zoom in and out. These methods work but can be inefficient and require many keystrokes,...

My Neovim takes roughly 113ms to fire up. THIS IS FAST. However, I don’t lazy load anything. Being a Lazy.nvim user, it’s kind of a shame I’m not actually making use of my plugin manager's flagship feature. But then again, it takes 113ms for nvim to start, what is there to gain here? Let’s say I drop it to 50ms. I gained 60ms which means that if I’m going to spend 30 minutes to actually reduce it, I’d have to open Neovim 15,929 times to get my time back 🤣. With an average of probably 5 times...

Hi Friends! Curious about Nix? Me too. The past few months of exploring it were quite interesting, to say the least. And it still feels like I've barely scratched the surface. [TL;DR] That said, it's already replacing some of my old workflows and I'm really happy discovering it, even while not even using Linux for most of my local work. What’s Nix? Nix is a powerful suite of tools, including a package manager (Nixpkgs), language (Nix DSL), and operating system (NixOS). It provides a robust...