A minimal Neovim config for speed and sanity.
FZF + ripgrep
instead 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 ripgrep
fd
orfind
-brew install fd
git
- 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" },
},
}
Choose your preferred theme by editing lua/config/themes.lua
:
vim.g.hvim_theme = "onedark"
-- vim.g.hvim_theme = "catppuccin"
-- vim.g.hvim_theme = "gruvbox"
-- vim.g.hvim_theme = "tokyonight"
-- vim.g.hvim_theme = "rose-pine"
-- vim.g.hvim_theme = "github_dark"
-- vim.g.hvim_theme = "github_light"
-- vim.g.hvim_theme = "github_dark_dimmed"
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