Skip to content

hpbyte/h-vim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

h-vim

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.

image

image

✨ Features

  • 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

⚡️ Requirements

Ensure you have the following tools installed:

  • Neovim (>= 0.11.0)
  • ripgrep (rg) - brew install ripgrep
  • fd or find - brew install fd
  • git
  • A Nerd Font for proper icon display

📦 Installation

  1. Backup your existing Neovim configs:
mv ~/.config/nvim{,.bak}
  1. Clone this repository to your Neovim config directory:
git clone https://github.com/hpbyte/h-vim.git ~/.config/nvim
  1. Start Neovim. Lazy.nvim will automatically install all plugins on first run.

Key Bindings: See KEYMAPS.md for complete keymap reference

🌐 LSPs

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
}

🎨 Code Formatting

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" },
  },
}

🎨 Themes

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"

🔌 Plugin List

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

📁 File Structure

├── 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

About

A minimal Neovim config for speed and sanity.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages