Welcome to Taihen personal NeoVim configuration repository, specifically
tailored for minimalist infrastructure development. Optimized for NeoVim 0.11+,
experience with earlier versions may vary. Built with lazy.nvim and mason
for efficient plugin management, it aims to provide a powerful, flexible, and
visually pleasing coding environment.
- Plugin Management: Powered by
lazy.nvimand Mason, enabling automatic installation and updates of plugins, formatters and LSPs. - Custom Keybindings: Intuitive shortcuts to improve navigation and editing efficiency, discoverable with whichkey.
- Language Support: Support for infrastructure development with Terraform, GoLang, Ansible, Helm, and Docker Compose. Includes YAML and JSON validation with SchemaStore integration, plus support for Python, Bash, Lua, TypeScript, and more via Mason-managed LSPs and formatters.
- Gruvbox Material Theme: Utilizes gruvbox-material with material design palette for a warm, eye-friendly color scheme that's pleasant on the eyes during sessions. While using with Ghostty or Kitty terminals, or any other terminal emulator that supports switching between dark and light themes, it also switches automatically when the system theme changes.
- Minimalist Aesthetic: A clean and minimalist interface with no status line, using noice and telescope for user interface, focusing on maximizing screen real estate and reducing distractions.
- Performance Optimized: A fast and responsive configuration, ensuring minimal startup time and smooth operation.
- Enhanced Editing: Powered by mini.nvim suite providing advanced text objects, surround operations, indent visualization, automatic whitespace management, smart buffer deletion, code movement, and split/join operations.
- Clipboard Manager: Persistent clipboard history with neoclip integrated into Telescope for quick access to previous yanks.
- Markdown Experience: Terminal rendering with render-markdown.nvim.
- Schema Validation: JSON and YAML schema validation powered by SchemaStore with support for custom schemas (e.g., Kubernetes, Helm, ArgoCD).
- AI Enhanced Code Assistance: Utilizing Copilot for inline code completion and Sidekick for agentic AI assistance with CLI integration (supporting Claude, Gemini, and other AI agents via tmux).
This configuration includes carefully selected plugins organized by category:
- gruvbox-material - Material design Gruvbox variant
- auto-dark-mode.nvim - Automatic theme switching
- noice.nvim - Enhanced UI for messages and cmdline
- incline.nvim - Buffer information display (no statusline)
- dressing.nvim - Enhanced vim.ui components
- nvim-colorizer.lua - Color code highlighting
- todo-comments.nvim - Highlight TODO/NOTE comments
- vim-illuminate - Highlight word under cursor
- sidekick.nvim - Agentic AI assistance with CLI agents
- copilot.lua - GitHub Copilot integration
- nvim-cmp - Autocompletion engine
- LuaSnip - Snippet engine
- mason.nvim - LSP/tool installer
- nvim-lspconfig - LSP configurations
- lsp-timeout.nvim - Auto-restart LSP for performance
- conform.nvim - Code formatting
- nvim-lint - Linting and diagnostics
- schemastore.nvim - JSON/YAML schema validation
- nvim-treesitter - Syntax parsing
- telescope.nvim - Fuzzy finder
- which-key.nvim - Keybinding discovery
- trouble.nvim - Diagnostics and quickfix UI
- nvim-neoclip.lua - Persistent clipboard manager
- lazygit.nvim - Terminal UI for Git operations
- gitsigns.nvim - Git signs and hunks
- codediff.nvim - VSCode-style diff viewer
- mini.nvim - Collection of independent modules:
- mini.ai - Advanced text objects
- mini.surround - Bracket/quote manipulation
- mini.indentscope - Indent visualization
- mini.trailspace - Whitespace management
- mini.comment - Code commenting with treesitter awareness
- mini.pairs - Auto-closing pairs
- mini.bracketed - Enhanced navigation with bracket mappings
- mini.bufremove - Smart buffer deletion without breaking layouts
- mini.move - Move lines/blocks with keyboard shortcuts
- mini.splitjoin - Toggle between single/multi-line code structures
- vim-sleuth - Auto-detect indentation
- render-markdown.nvim - Terminal rendering
See lua/plugins.lua for complete list and configurations.
-
Backup Your Current Configuration:
mv ~/.config/nvim ~/.config/nvim.backup
-
Clone the Repository:
git clone https://github.com/taihen/neovim-dotfiles.git ~/.config/nvim -
Install All Dependencies (one-command setup):
cd ~/.config/nvim ./scripts/install-dependencies.sh
This script installs:
- Neovim 0.11+
- All language servers (bash, go, terraform, lua, yaml, ansible, docker, helm, markdown)
- Formatters and linters (black, stylua, prettier, gofumpt, tflint, trivy, vale, etc.)
- Search tools (fd, ripgrep, fzf)
- Git tools (gh, lazygit)
- Nerd Fonts (Hack, JetBrains Mono, Fira Code)
- Supporting tools (sqlite, make, gcc, node, python3, go)
-
Configure Your Terminal: Set your terminal font to a Nerd Font (e.g., "Hack Nerd Font") for proper icon rendering.
-
Launch Neovim: On first launch, plugins will auto-install:
nvim
-
Verify Installation:
:checkhealth " Check for issues :Lazy sync " Sync plugins :Mason " Verify LSP servers installed
If you prefer manual installation or aren't using Homebrew, see the External Dependencies section below for a complete list of required tools.
The install-dependencies.sh script handles all these automatically on
macOS/Linux with Homebrew. For manual installation or other platforms, ensure
these are available:
- Build Tools: A C compiler (like
gccorclang) is required bynvim-treesitterto build language parsers. - Node.js and npm: For JavaScript/TypeScript based plugins and language servers (e.g.,
copilot.lua,eslint). - Python3 and pip: Required by several Python-based plugins and tools (e.g.,
yamllint, some MCP servers). - Rust and Cargo: For Rust development and Rust-based plugins/tools (e.g.,
ruff). - GoLang: For Go development and Go-based language servers (
gopls). - Terraform CLI: Required for Terraform language support and commands.
- make: Required by
telescope-fzf-native.nvimfor building the native FZF sorter. - sqlite3: Required by
nvim-neoclip.luafor persistent clipboard history. - tmux: Required by
sidekick.nvimfor CLI integration and agentic workflows. - lazygit: Terminal UI for Git commands, integrated via
lazygit.nvimfor enhanced Git workflows. - Search Utilities (Recommended):
ripgrep: Highly recommended for fast searching in Telescope.fd: Recommended for fast file finding in Telescope.
- Optional (Depending on Use Case):
Docker: May be needed if running certain tools or MCP servers in containers.shellharden: Shell script hardening and formatting (used by conform.nvim).shfmt: Shell script formatting (used by conform.nvim).vale: Syntax-aware prose linting (used by nvim-lint).- AI Agents:
claude,gemini,codexoropencodeCLI tools to powersidekick.nvim
Ensure these dependencies are installed via your system's package manager (e.g., apt, brew, pacman).
Feel free to modify and customize the configuration to suit your preferences.
The init.lua file is the starting point, but most of the configuration is in
./lua/ where you can change key mappings, themes, and plugins.
Contributions are welcome. This is never ending work in progress and never expect to be perfect. If you have improvements or corrections, please submit a pull request. Thank you in advance.
This NeoVim configuration, feel free to do whatever. Have fun, copy, and paste parts of it to your likening.
