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

Postgres is not a database. For years, we’ve been taught to see Postgres as the reliable, open source workhorse for storing our data. Everyone called it "The Toyota of databases", you know... it just works. But to leave it at that is to miss the whole story.Postgres isn’t just a place to put your data, it’s a powerful development platform that can become the core of your entire backend, an operating system (yea, bold) for your application’s stack. Diving deep into its capabilities I learned...

How I Setup Terminal On My Mac To Make It Amazing I often get asked about my "terminal setup", and I try to throw tips but it's never enough. This answer took a long time to compile but I'm glad to share it: A terminal setup from scratch (literal white screen terminal) to multiplexing, color output, auto-completion, history manager, fonts, nerd fonts etc etc etc... I learned that the journey to a “perfect” terminal setup is a personal one, built from years of small, incremental improvements....

The Unreasonable Effectiveness of 12-Factor Apps This issue is brought to you by: Twingate: It's time to ditch your VPN. Keep private resources and internet traffic protected with Zero Trust security tools built for the modern world of work. Start securing your Kubernetes clusters today! The title of this newsletter isn’t just fluff; it points to a fundamental truth in software development. Often, the most expensive problems stem from ignoring a few simple, foundational rules. The...