My neovim config
README.md

nvim-config 🚀 #

My Neovim configuration based on LazyVim with additional plugins and customizations for enhanced productivity.

dashboard

which-key

ai

grep

📦 Install #

git clone https://github.com/joelazar/nvim-config.git ~/.config/nvim
nvim

At first run, Neovim will install all necessary plugins, LSPs, formatters, and DAP adapters.

And you are done! 🎉

✨ Features #

🧠 AI & Assistance #

  • Copilot Native lazyvim.json - GitHub Copilot inline completions via the native LSP extra, with Next Edit Suggestions through Sidekick.
  • Sidekick.nvim lua/plugins/sidekick.lua - Tmux-backed Sidekick CLI bridge; <D-r> toggles the AI window (pi), <D-e> maximizes it.
  • Code review with tuicr lua/config/keymaps.lua - <leader>rr / <leader>rb / <leader>rf / <leader>rp review the working tree, branch, file, or PR.

📝 Writing & Knowledge Management #

  • Obsidian.nvim lua/plugins/obsidian.lua - Multi-vault workflow with templates, weekly notes, checkboxes, and a full <leader>z command suite. Skipped on machines with a .disable-obsidian marker.
  • URL → Markdown helper lua/plugins/url-to-markdown.lua - Convert the URL under the cursor into a titled Markdown link with <C-S-a>.
  • Word count in Lualine lua/plugins/lualine.lua - Live word counts for Markdown, LaTeX, and other writing formats.

📂 File & Workspace Navigation #

  • Yazi.nvim lua/plugins/yazi.lua - Toggle the Yazi terminal file manager (<leader>y / <leader>Y) without leaving Neovim.
  • Snacks.nvim lua/plugins/snacks.lua - Dashboard, file picker with filename-first formatting, project-aware sources, explorer cut/paste, and a <C-p> shortcut.
  • Smart-splits.nvim lua/plugins/smart-splits.lua - <C-h/j/k/l> navigation that crosses over into herdr panes.
  • Grug-far.nvim lua/plugins/grug.lua - <leader>sr search and replace, pre-filtered to the current file extension.

🧰 Development Tools #

🎨 UI & Insights #

⚙️ Custom Configuration #

Core Files #

Key Customizations #

This config modifies several LazyVim defaults (see lua/config/keymaps.lua):

  • Q - Close window instead of entering Ex mode
  • gy, gp - System clipboard operations
  • <C-S> - Save file
  • <C-d>, <C-u> - Better page navigation with centering
  • Smart dd that preserves your last yank when deleting empty lines
  • <CMD>+j - Toggle terminal in current directory
  • <leader>us - Toggle the harper_ls grammar assistant
  • <leader>ca - Code actions menu (via LSP)

Additional Features #

📋 LazyVim Extras #

This configuration includes numerous LazyVim extras (see lazyvim.json):

  • AI: copilot-native, sidekick
  • Coding: mini-surround, yanky
  • DAP: core, nlua
  • Editor: dial, inc-rename, snacks_explorer, snacks_picker
  • Formatting: prettier
  • Languages: ansible, docker, git, go, json, markdown, python, rust, tailwind, terraform, toml, typescript, yaml, zig
  • Linting: eslint
  • Testing: core
  • UI: edgy
  • Utilities: chezmoi, dot, mini-hipatterns

🔧 File Structure #

  • init.lua - Entry point that loads the configuration
  • lua/config/ - Core configuration files
  • lua/plugins/ - Custom plugin configurations
  • stylua.toml - Formatting rules for Lua files

🎨 Theme #

Using Catppuccin with the "mocha" flavour for a warm, modern look. See lua/plugins/catppuccin.lua for configuration.