kwerty

Neovim (GrimalDev)

NvChad-based Neovim with Everforest theme, 50+ plugins, harpoon, avante, and custom statusline

macosGrimalDeveditorneovimnvchadlua

Overview

GrimalDev's Neovim is built on NvChad for a polished base, then extended with 50+ plugins. The theme is Everforest with transparency, and includes avante.nvim for AI-assisted editing, harpoon for fast file switching, and extensive DAP/conform/telescope configuration.

NvChad Base

-- chadrc.lua
local M = {}
 
M.base46 = {
  theme = "everforest",
  transparency = true,
  hl_override = {
    Normal = { bg = "NONE" },
  },
}
 
M.ui = {
  tabufline = { enabled = false },
  statusline = {
    order = { "mode", "harpoon", "session", "file", "%=", "lsp_msg", "%=", "diagnostics", "lsp", "cursor", "cwd" },
    modules = {
      harpoon = function() ... end,
      session = function() ... end,
    },
  },
}
 
M.nvdash = {
  load_on_startup = true,
  -- Custom ASCII art header and buttons
}
 
return M

Neovide Support

-- Neovide transparency settings
if vim.g.neovide then
  vim.g.neovide_transparency = 0.8
  vim.g.neovide_window_blurred = true
end

Folding (UFO + Treesitter)

-- Treesitter-based folding with per-filetype overrides
vim.o.foldcolumn = "1"
vim.o.foldlevel = 99
vim.o.foldlevelstart = 99
vim.o.foldenable = true
 
-- ufo config
{
  "kevinhwang91/nvim-ufo",
  dependencies = "kevinhwang91/promise-async",
  opts = {
    provider_selector = function(_, ft)
      -- per-filetype fold providers
      return { "treesitter", "indent" }
    end,
  },
}

Key Plugins

PluginPurpose
avante.nvimAI-powered Cursor-like experience
blink.cmpFast completion engine
flash.nvimMotion/jump navigation
harpoonQuick file marks (Alt+f/d/s/a)
telescope.nvimFuzzy finder (leader+.)
trouble.nvimDiagnostics list
yazi.nvimFile manager integration
lazygit.nvimGit TUI from Neovim
octo.nvimGitHub PR/issue management
snacks.nvimUtility collection
conform.nvimFormatting
nvim-dapDebug adapter protocol
undotreeVisual undo history
noice.nvimUI for messages/cmdline/popupmenu
nvim-ufoFolding with treesitter
auto-sessionSession persistence
treesjSplit/join code blocks
nvim-spiderWord motion improvements
various-textobjsExtended text objects

Key Mappings

Harpoon

-- Alt+f/d/s/a for marks 1-4
map("n", "<A-f>", function() harpoon:list():select(1) end)
map("n", "<A-d>", function() harpoon:list():select(2) end)
map("n", "<A-s>", function() harpoon:list():select(3) end)
map("n", "<A-a>", function() harpoon:list():select(4) end)
map("n", "<leader>a", function() harpoon:list():add() end)

Telescope

map("n", "<leader>.", "<cmd>Telescope find_files<cr>")
map("n", "<leader>/", "<cmd>Telescope live_grep<cr>")
map("n", "<leader>,", "<cmd>Telescope buffers<cr>")

Folding

map("n", "<leader>l", "za")           -- toggle fold
map("n", "<leader>k", "zM")           -- close all folds
map("n", "<leader>K", "zR")           -- open all folds
map("n", "<leader>L", "zc")           -- close fold
map("n", "<leader>h", "zo")           -- open fold

DAP

map("n", "<leader>db", "<cmd>DapToggleBreakpoint<cr>")
map("n", "<leader>dc", "<cmd>DapContinue<cr>")
map("n", "<leader>do", "<cmd>DapStepOver<cr>")
map("n", "<leader>di", "<cmd>DapStepInto<cr>")

Conform (Formatting)

{
  "stevearc/conform.nvim",
  opts = {
    formatters_by_ft = {
      lua = { "stylua" },
      javascript = { "prettier" },
      typescript = { "prettier" },
      python = { "black" },
      rust = { "rustfmt" },
    },
    format_on_save = { timeout_ms = 500, lsp_fallback = true },
  },
}

Source Repositories