kwerty

Neovim (ratataque)

NvChad-based Neovim config with harpoon, flash, telescope, and AI assistance

linuxratataqueeditorneovimluanvchad

Overview

ratataque's Neovim config is built on NvChad v2.5, extending it with custom plugins for navigation, editing, and AI assistance. Key features include treesitter-based folding, harpoon for file marks, flash for motion, and Avante for AI coding.

Structure

~/.config/nvim/
├── init.lua           # Entry point, loads NvChad + plugins
├── lua/
│   ├── chadrc.lua     # NvChad configuration
│   ├── options.lua    # Vim options + folding setup
│   ├── mappings.lua   # All keybindings organized by section
│   ├── configs/       # Plugin configurations
│   └── plugins/       # Plugin specs (40+ plugins)

Plugin Manager

Uses lazy.nvim with NvChad as the base:

require("lazy").setup({
  {
    "NvChad/NvChad",
    lazy = false,
    branch = "v2.5",
    import = "nvchad.plugins",
  },
  { import = "plugins" },
}, lazy_config)

Core Options

vim.g.mapleader = " "
 
vim.opt.relativenumber = true
vim.opt.shiftwidth = 4
vim.opt.tabstop = 4
vim.opt.expandtab = true
 
-- Treesitter folding
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
vim.opt.foldlevelstart = 0

Key Plugins

Harpoon (file marks)

Quick file switching with Alt + home row keys:

["<A-f>"] = { "<cmd>lua require('harpoon.ui').nav_file(1)<CR>" },
["<A-d>"] = { "<cmd>lua require('harpoon.ui').nav_file(2)<CR>" },
["<A-s>"] = { "<cmd>lua require('harpoon.ui').nav_file(3)<CR>" },
["<A-a>"] = { "<cmd>lua require('harpoon.ui').nav_file(4)<CR>" },
 
["<leader>mf"] = { "<cmd>lua require('harpoon.mark').replace_file(1)<CR>" },
["<C-e>"] = { "<cmd>lua require('harpoon.ui').toggle_quick_menu()<CR>" },

Telescope

["<leader>."] = { "<cmd>Telescope find_files<CR>" },
["<leader>ff"] = { "<cmd>Telescope frecency workspace=CWD<CR>" },
["<leader>fw"] = { "<cmd>Telescope live_grep<CR>" },
["<leader>b"] = { "<cmd>Telescope buffers<CR>" },
["<leader>/"] = { "<cmd>Telescope current_buffer_fuzzy_find<CR>" },
["<leader>fu"] = { "<cmd>Telescope undo<CR>" },
[":"] = { "<cmd>Telescope cmdline<CR>" },

Flash + Leap

Motion plugins for fast cursor navigation (configured via plugin specs).

Avante (AI)

["<leader>e"] = { "<cmd>AvanteToggle<CR>" },
["<leader>ao"] = { "<cmd>AvanteClear<CR>" },
-- Visual mode
["<leader>ae"] = { "<cmd>AvanteEdit<CR>" },

blink.cmp

Completion engine with LSP, path, snippets, and buffer sources.

Keybindings

Organized into sections in mappings.lua:

General

["<A-x>"] = { "<C-w>c", "Window close" },
["<A-e>"] = { "<cmd>qa<CR>", "Exit" },
["<leader>j"] = { "<cmd>normal! zz<CR>", "Center buffer" },
["<leader>ca"] = { "<cmd>lua require('tiny-code-action').code_action()<CR>" },
["<leader>cb"] = { "<cmd>%bd|e#<CR>", "Close all buffers" },
["<leader><leader>"] = { "<cmd>Telescope resume<CR>" },

Folding

["<leader>l"] = { "zA", "Toggle fold recursively" },
["<leader>k"] = { "za", "Toggle fold" },
["<leader>K"] = { "zRzz", "Open all folds" },
["<leader>L"] = { "zMzz", "Close all folds" },
["<leader>h"] = { "zMzvzz", "Focus current fold" },
["["] = { "zj", "Next fold" },
["]"] = { "zk", "Prev fold" },

Git

["<leader>gg"] = { "<cmd>LazyGit<CR>" },
["<leader>gc"] = { "<cmd>Telescope git_commits<CR>" },
["<leader>gb"] = { "<cmd>Telescope git_branches<CR>" },
["<leader>gs"] = { "<cmd>Telescope git_status<CR>" },
["<leader>gvd"] = { "<cmd>DiffviewOpen<CR>" },
["<leader>gvf"] = { "<cmd>DiffviewFileHistory %<CR>" },

Text Editing

-- Insert mode
["<C-b>"] = { "<ESC>^i", "Beginning of line" },
["<C-e>"] = { "<End>", "End of line" },
["<C-h>"] = { "<Backspace>", "Backspace" },
["<C-l>"] = { "<Delete>", "Delete" },
 
-- Visual mode: move lines
["<C-j>"] = { ":m '>+1<CR>gv=gv", "Move down" },
["<C-k>"] = { ":m '<-2<CR>gv=gv", "Move up" },
 
-- Visual surround
["("] = { "<Plug>(nvim-surround-visual)(" },
["{"] = { "<Plug>(nvim-surround-visual){" },

DAP (Debugging)

["<leader>ds"] = { "<cmd>lua require'dap'.toggle_breakpoint()<CR>" },
["<leader>dm"] = { "<cmd>DapContinue<CR>" },
["<down>"] = { "<cmd>DapStepInto<CR>" },
["<up>"] = { "<cmd>DapStepOver<CR>" },

Various Text Objects

Custom text objects via various-textobjs:

vim.keymap.set({ "o", "x" }, "an", 'require("various-textobjs").number("outer")')
vim.keymap.set({ "o", "x" }, "aa", 'require("various-textobjs").indentation("outer", "outer")')
vim.keymap.set({ "o", "x" }, "iv", 'require("various-textobjs").value("inner")')
vim.keymap.set({ "o", "x" }, "ik", 'require("various-textobjs").key("inner")')
vim.keymap.set({ "o", "x" }, "O", 'require("various-textobjs").subword("inner")')
vim.keymap.set({ "o", "x" }, "o", "iw")

Notable Plugins

  • telescope.nvim + frecency, undo, cmdline extensions
  • harpoon - Quick file switching
  • flash.nvim + leap.nvim - Motion
  • nvim-surround - Surround operations
  • trouble.nvim - Diagnostics panel
  • lazygit.nvim - Git UI
  • diffview.nvim - Git diff viewer
  • avante.nvim - AI coding assistant
  • conform.nvim - Formatting
  • auto-session - Session management
  • yazi.nvim - File manager integration
  • blink.cmp - Completion
  • various-textobjs - Custom text objects

Neovide Support

if vim.g.neovide then
    vim.g.neovide_transparency = 0.8
    vim.g.neovide_refresh_rate = 120
    vim.g.neovide_cursor_vfx_mode = "ripple"
    vim.g.neovide_scale_factor = 0.7
    vim.g.neovide_window_blurred = 1
end

Source Repositories