A minimal Neovim config for speed and sanity.
FZF + ripgrepinstead of Telescope.- Conditional loading for faster startups.
- Traditional vim keybinds that actually make sense.
- Plugin Manager: Lazy.nvim for fast startup and lazy loading
- LSP Support: TypeScript, Go, Astro, and Lua language servers with Mason
- File Navigation: FZF with ripgrep integration for blazing fast search
- Git Integration: Fugitive and GitSigns for comprehensive Git workflow
- File Explorer: nvim-tree with vim-like navigation (h/l keys)
- Search & Replace: nvim-spectre for project-wide find/replace operations
- Code Formatting: conform.nvim for configurable code formatting
- Startup Screen: Minimal dashboard with quick actions and plugin stats
- Completion: nvim-cmp with LSP, buffer, path, and snippet sources
- Syntax Highlighting: Treesitter with incremental selection
- Configurable Themes: Multiple theme options including OneDark, Catppuccin, Gruvbox, Tokyo Night, Rose Pine, and GitHub themes
Ensure you have the following tools installed:
Neovim(>= 0.11.0)ripgrep(rg) -brew install ripgrepfdorfind-brew install fdgit- A Nerd Font for proper icon display
- Backup your existing Neovim configs:
mv ~/.config/nvim{,.bak}- Clone this repository to your Neovim config directory:
git clone https://github.com/hpbyte/h-vim.git ~/.config/nvim- Start Neovim. Lazy.nvim will automatically install all plugins on first run.
Key Bindings: See KEYMAPS.md for complete keymap reference
Use :Mason to browse available servers and edit lua/config/lsp_servers.lua to add the desired language servers:
vim.g.hvim_lsp_servers = {
ts_ls = {}, -- TypeScript/JavaScript
gopls = {}, -- Go
lua_ls = { -- Lua
settings = {
Lua = {
diagnostics = {
globals = { "vim" },
},
},
},
},
pylsp = {}, -- Python
rust_analyzer = {},-- Rust
}Use :Mason to browse available formatters and edit lua/config/lsp_servers.lua to add the desired formatters:
vim.g.hvim_formatters = {
formatters_by_ft = {
javascript = { "prettier" },
typescript = { "prettier" },
lua = { "stylua" },
go = { "gofmt" },
python = { "black" },
rust = { "rustfmt" },
},
format_on_save = {
timeout_ms = 1000,
lsp_fallback = true,
},
}With prettier and eslint:
vim.g.hvim_formatters = {
formatters_by_ft = {
javascript = { "eslint_d", "prettier" },
typescript = { "eslint_d", "prettier" },
json = { "prettier" },
},
}Use <leader>ut (normal mode) or :HvThemeSelect to open an interactive theme picker. The following themes are available out of the box: OneDark, Catppuccin, Gruvbox, Tokyo Night, Rose Pine, GitHub Dark, GitHub Light, and GitHub Dark Dimmed.
To change the default theme on startup, update the DEFAULT_THEME value near the top of lua/config/themes.lua or set vim.g.hvim_theme before require("config.themes") is called in init.lua.
| Category | Plugin | Description |
|---|---|---|
| Core | lazy.nvim | Plugin manager |
| mason.nvim | LSP/tool installer | |
| nvim-lspconfig | LSP configurations | |
| Navigation & Search | fzf.vim | Fuzzy finder with ripgrep |
| nvim-tree.lua | File explorer | |
| nvim-spectre | Search and replace | |
| Git | vim-fugitive | Git commands |
| gitsigns.nvim | Git signs and hunk navigation | |
| Editor | nvim-treesitter | Syntax highlighting |
| nvim-cmp | Completion engine | |
| Comment.nvim | Smart commenting | |
| nvim-autopairs | Auto-close brackets | |
| UI | onedark.nvim | Colorscheme |
| lualine.nvim | Statusline | |
| bufferline.nvim | Buffer tabs | |
| nvim-web-devicons | File icons |
├── init.lua
├── KEYMAPS.md # Complete keymap reference
├── lua/
│ ├── config/
│ │ ├── autocmds.lua
│ │ ├── keymaps.lua
│ │ ├── lazy.lua
│ │ ├── lsp_servers.lua
│ │ ├── themes.lua
│ │ └── options.lua
│ └── plugins/
│ ├── completion.lua
│ ├── editor.lua
│ ├── fzf.lua
│ ├── git.lua
│ ├── lsp.lua
│ ├── spectre.lua
│ ├── treesitter.lua
│ ├── formatting.lua
│ ├── dashboard.lua
│ ├── themes.lua
│ └── ui.lua


