Back to workbench
/usr/bin/neovim-settings

Neovim Settings

How I set up Neovim for my Go and TypeScript workflow.

I used to be a die-hard VS Code user, but I always felt like it was a bit too "heavy." I wanted something that lived in the terminal and didn't take five seconds to open. That’s how I fell down the Neovim rabbit hole. My configuration is a mix of NvChad and LazyVim patterns that I’ve tweaked over the months to fit my full-stack workflow.

The Lua Learning Curve

One of the coolest (and most frustrating) parts of Neovim is that the entire configuration is written in Lua. It took me a while to get the hang of it, but it's really satisfying to be able to script your own editor exactly how you want it.

-- A look at how I set up my LSP keybindings local on_attach = function(client, bufnr) local nmap = function(keys, func, desc) if desc then desc = 'LSP: ' .. desc end vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) end nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame') nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction') nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') end

Why I stick with it

It’s not just about being "elite"—it’s about the speed. Having my editor, compiler, and Git all in the same terminal window just makes my Go and TypeScript development feel so much more fluid. I’ve optimized my setup specifically for gopls and tsserver so I get all the IDE-like features (autocomplete, definitions) without the bloat.

A Never-ending Hobby

I'm always messing with my init.lua. Whether it's testing a new Treesitter parser for better highlighting or trying out a different fuzzy finder, my Neovim setup is never really "finished." It’s become a bit of a hobby in itself, but it makes coding every day just a little bit more fun.