Skip to content

ph1losof/nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

251 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Neovim Config <3

Startuptime: 88ms

Based on the actual CPU time of the Neovim process till UIEnter.
This is more accurate than `nvim --startuptime`.
 LazyStart 6.84ms
 LazyDone  83.17ms (+76.33ms)
 UIEnter   88ms (+4.84ms)

Introduction

Most Neovim configurations pretend like they are being used to get actual work done. This one is.

This is the Neovim configuration I use daily in large production codebases. Every plugin, keymap, and option earns its place through real usage - if something breaks or slows me down, it gets fixed or removed. All plugins are actively used and I keep it as minimal as possible, but I never compromise on developer experience - if there's a better path, I always take it.

It contains a lot of "hacks" and little known tricks I've accumulated over the years to make overall experience better, which you won't find in any other dotfiles - all of this comes from battle-testing plugins in real projects and digging through countless GitHub issues to find solutions that actually work.

I actively keep it up to date with modern approaches, plugins, and ecosystem changes. Even though it is opinionated, it strikes a good balance between being ready to use now and providing good defaults as a starting point for your own configuration.

Highlights

  • 67 plugins organized across 38 separate plugin files
  • 20 language servers configured with smart root detection and conditional attachment
  • AI-augmented development via Codeium integration (I use claude-code via tmux)
  • Custom tree-sitter parser (edf) for .env file syntax highlighting
  • Format on save with conform.nvim (prettier, biome, stylua, ruff, rustfmt, and more)
  • 10+ linters running via nvim-lint
  • Modern completion via blink.cmp with AI and LSP sources
  • Sensitive data masking with shelter.nvim
  • Environment variable management with ecolog2.nvim
  • REST client via kulala.nvim
  • Database interface via vim-dadbod

Languages Supported

TypeScript/JavaScript, React/Vue/Astro, Python, Rust, Lua, SQL, Bash, HTML/CSS/Tailwind, Markdown, TOML, YAML, JSON, Docker, GraphQL, Prisma, and Graphviz DOT.

Installation

Prerequisites

Required:

  • Neovim >= 0.10
  • git, make, unzip
  • C compiler (gcc or clang) — needed by tree-sitter to compile parsers
  • ripgrep — used by snacks.nvim picker for live grep
  • Node.js & npm — required by many LSP servers and tools
  • Nerd Font — provides icons used throughout the UI (vim.g.have_nerd_font is set to true)
  • Clipboard toolpbcopy/pbpaste (macOS), xclip/xsel (Linux), or win32yank (Windows)

Recommended:

  • mise — runtime version manager (config prepends mise shims to PATH)
  • lazygit — terminal UI for git, integrated via snacks.nvim (<leader>lg)
  • fd — faster file finding for the picker

Optional (language-specific):

  • Deno — for Deno project support (LSP activates when deno.json/deno.jsonc is present)
  • Python 3 — for Python development (pyright + ruff)
  • Rust/cargo — for Rust development (rust-analyzer + rustfmt)

Setup

  1. Clone this repository:

    git clone https://github.com/ph1losof/nvim ~/.config/nvim
  2. Open Neovim — Lazy.nvim will auto-install all plugins on first launch:

    nvim
  3. Install all LSP servers, formatters, and linters (this is a custom command defined in this config, not a built-in Mason command):

    :MasonInstallAll
  4. Verify tree-sitter parsers are installed:

    :TSUpdate

Key Bindings

Leader key is Space. Here are the most important mappings — run :map or check lua/config/mappings.lua and individual plugin files for the full list.

Navigation & Search

Key Description
<leader>ff Find files
<leader>fw Live grep
<leader><space> Find open buffers
<leader>fr Resume last search
<leader>fh Help pages
<C-n> Open file explorer (Oil)
<leader>h1h4 Jump to Harpoon mark 1–4
<leader>ha Add buffer to Harpoon

LSP & Code

Key Description
K Hover documentation
<leader>gd Go to definition
<leader>gr Find references
<leader>gI Go to implementation
<leader>gp Peek definition
<leader>rn Rename symbol
<leader>ca Code action
<leader>ol Toggle outline

Git

Key Description
<leader>lg Open Lazygit
<leader>lf Lazygit current file history
<leader>hs Stage hunk
<leader>hp Preview hunk
<leader>hb Git blame line
]c / [c Next / previous git change

Editing & UI

Key Description
<leader>/ Toggle comment
<leader>sr Search & replace (grug-far)
<leader>z Zen mode
<leader>u Undotree
S Quick find/replace word under cursor
U Redo
+ / - Increment / decrement number

Project Structure

~/.config/nvim/
├── init.lua                  # Entry point (leader key, loads config modules)
├── lua/
│   ├── config/
│   │   ├── lazy.lua          # Lazy.nvim bootstrap and setup
│   │   ├── options.lua       # Vim options and diagnostics
│   │   ├── mappings.lua      # Global keymaps
│   │   └── autocmds.lua      # Autocommands
│   ├── plugins/              # 38 plugin spec files (one per plugin/group)
│   └── helpers.lua           # Shared utility functions
├── snippets/                 # Custom snippets (drizzle, package.json, css)
├── patches/                  # Plugin patches (applied via patchr.nvim)
└── lazy-lock.json            # Plugin version lockfile

Thanks

When I initially started using Neovim, my starting point was NvChad. That's why you may find keybindings similar to NvChad's.

The initial transition from NvChad was done using nvim-lua/kickstart.nvim as a starting point. Over time I dropped most of it and rewrote everything from scratch, keeping only a few good parts from them. Huge thanks to kickstart for getting me started in non-distro direction.

A lot of good defaults, extras, and plugin choices in this config were inspired by LazyVim. Whenever I add a new plugin, I usually look up its source code in the LazyVim repo first — a great reference for well-thought-out Neovim defaults.

License

MIT

About

Pragmatic batteries-included Neovim config for AI-augmented coding - built for real, day-to-day work. 67 plugins, 20 LSPs, ~90ms startup.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages