Skip to content
ditramadiaPublic

About

Spent 400 hours configuring Lua so I don't have to spend 2 seconds touching a mouse.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

The Best Neovim Config

Lua

Preview


Welcome to my Neovim configuration. It's built on LazyVim.

This repo exists for two reasons:

  1. Future me, who just got a new machine and forgot everything. You're welcome.
  2. You. Admire it, take your time.

✨ Features

Looks

  • kanagawa colorscheme with transparent background.
  • Custom ASCII art dashboard via snacks.nvim. It's huge, padded by 8 lines. It serves no functional purpose. It is the most important file in this repo.
  • Rounded borders everywhere (windows, completion menu, docs popups, floating terminal).
  • Bufferline with thicc separators.
  • Smear cursor and mini.animate.
  • Treesitter context.

Languages (the Ones I Actually Use)

Language What's going on
Go gopls with gofumpt disabled (I have opinions), goimports for formatting, golangci-lint for being told I'm wrong.
TypeScript / JS LazyVim extra + ESLint + Prettier.
SQL sqlfluff forced into the Postgres dialect.
Markdown Prettier is banned here. markdownlint-cli2 + markdown-toc only.
JSON LazyVim extra.
Make Treesitter parser for Makefiles.
Lua / YAML / JSON / Dart Forced to 2-space indent via autocmd. Everything else gets 4 spaces. Tabs get nothing.

Other Stuff

  • DAP and test runner extras, for rare occasions.
  • nvim-surround.
  • LSP inlay hints disabled by default. I know what type my variable is.
  • Vertical picker layout and a floating terminal.

⌨️ Keymaps I Added

All one of them:

Key Action
<leader>h Go back to the dashboard. To stare at the ASCII art. Again.

Everything else is LazyVim's defaults.


🚀 Installation

Here's what you need.

Prerequisites

  • Neovim >= 0.11 (the config uses winborder, which older versions will politely crash on)
  • git
  • A JetBrains Mono Nerd Font or any other nerd font, otherwise the dashboard icons will be little boxes of shame.
  • A C compiler (for Treesitter parsers)
  • ripgrep and fd for the picker
  • lazygit (optional, but you'll want it)
  • Go, Node.js, and friends for the language tooling. Mason will install the LSPs/formatters, but it can't install the languages themselves.

Steps

# 1. Back up whatever sad config your machine has
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak

# 2. Clone this masterpiece
git clone https://github.com/ditramadia/nvim.git ~/.config/nvim

# 3. Launch it and watch lazy.nvim install everything
nvim

Plugin versions are pinned in lazy-lock.json, so you get exactly the setup that worked last time instead of whatever broke upstream this week. Run :Lazy restore if things look off.

Then run :checkhealth and fix whatever it yells about.


📁 Structure

~/.config/nvim
├── init.lua                 # One line. Truly a feat of engineering.
├── lazy-lock.json           # Pinned plugin versions. Do not touch.
├── lazyvim.json             # Enabled LazyVim extras
└── lua
    ├── config
    │   ├── autocmds.lua     # 2-space indent for lua/yaml/json/dart
    │   ├── keymaps.lua      # The one (1) keymap
    │   ├── lazy.lua         # lazy.nvim bootstrap
    │   └── options.lua      # 4-space indent, rounded borders
    └── plugins
        ├── colorscheme.lua  # kanagawa, transparent
        ├── dashboard.lua    # The ASCII art. The crown jewel.
        ├── editor.lua       # nvim-surround
        ├── lang-*.lua       # Per-language tweaks (go, make, markdown, sql)
        ├── lsp.lua          # Inlay hints: off
        └── ui.lua           # Lualine, bufferline, blink.cmp, snacks tweaks

🙏 Credits

  • folke, for LazyVim, lazy.nvim, snacks.nvim, and basically my entire personality as a Neovim user.
  • rebelot, for kanagawa.
  • Me.

📜 License

Apache 2.0, inherited from the LazyVim starter. Steal whatever you want, that's what I did.

About

Spent 400 hours configuring Lua so I don't have to spend 2 seconds touching a mouse.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages