⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠸⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⡀⠘⣇⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠘⡄⠀⠀⠀⠀⠀⠀⣀⣴⣶⣿⣿⣿⣿⡆⠀⠙⢿⣿⣿⣿⣶⣦⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⢳⡀⠀⠀⣠⣴⣿⣿⣿⣿⣿⣿⣿⡟⠇⠀⢠⣦⠹⢿⣿⣿⣿⣿⣿⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢸⣇⠀⠙⢀⣾⡿⠿⣛⣛⣭⣭⣥⣤⣤⡍⢄⠀⢼⠅⣾⣦⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⠄⠰⢛⣥⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣎⣋⠴⣶⣦⣍⡻⣿⣿⣿⣿⣿⣿⣿⣿⣯⡢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⢻⣿⡿⣿⣿⡏⢻⡆⣌⢻⣯⡁⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣷⣾⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⡇⣿⣿⡇⢸⡇⢿⣆⠻⡇⣼⣿⣿⣿⣿⣿⣧⢿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣸⣿⢸⣿⣿⣿⡇⡆⣿⡇⢻⣿⡇⠀⡇⣈⠻⣧⡙⢿⣿⣿⢹⣿⣿⣿⠸⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⢿⡇⣿⣿⢸⣿⣿⣿⡇⡇⢿⡇⢸⣿⣷⠀⠇⣿⣶⡙⣷⣾⣿⣿⢸⣿⡟⢿⡄⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⢻⣿⣿⢸⡇⣿⣿⠘⡟⣿⣿⡇⡇⢸⡇⠀⣋⣥⢀⡆⣿⣿⣦⡈⢿⣿⣿⣼⣿⠧⠠⠡⢻⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡇⣿⣿⣿⣿⡇⢿⣿⠃⡇⣿⣿⣷⠀⣅⣆⠘⠉⠁⠀⢁⣈⢛⠛⠃⢸⣿⣿⣿⣿⡆⢃⠀⢸⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠁⣿⢸⣿⢿⡇⢸⣛⠀⠹⠘⡇⣿⣸⣼⢏⣠⣆⠸⠅⠀⢙⣀⣾⡇⢸⣿⣿⢹⣿⠃⠀⠀⠈⢸⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⣿⠸⣿⠈⣧⢀⠙⠁⠀⠆⣿⣼⣿⣿⣿⣿⣶⣶⣶⣾⣿⣿⣿⡇⢸⢹⡇⣿⣿⠀⢶⣭⠃⢸⣿⢻⣷⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡄⢉⠀⢿⡔⠹⠀⣶⣦⠇⠂⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠈⣼⣿⣿⡟⣰⣦⣻⡷⢸⣿⣾⡏⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡖⠂⠀⠸⡌⣧⣷⠁⢹⣧⣖⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢠⣿⣿⣿⡇⢿⡝⣿⠇⣌⣿⡟⣿⡆⠐⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠏⠀⡐⣰⣷⢠⢹⣿⡇⢸⣿⣿⣷⣌⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣼⣿⣿⣿⢁⣨⠄⠋⠀⣿⣿⡇⠿⢿⡀⠂⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠇⢀⡜⣱⣿⡿⠈⢸⣿⣇⠀⣿⣿⣿⣿⣿⠿⠿⠿⠿⣿⣿⣿⣿⣿⣿⡿⢠⣿⢏⣿⡏⣘⠋⠀⠄⣇⢳⣿⣿⠀⠂⢻⡀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠏⣠⡿⢃⣾⣿⠇⠼⢸⣿⣿⢰⠘⢿⣿⣿⣿⣦⣿⣿⣷⣾⣿⣿⣿⣿⣿⠃⢸⣿⢸⣿⣿⣿⠀⠀⠀⢸⢸⣿⣿⡄⡀⠀⢿⡀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣷⣾⠟⢁⣿⣿⡟⡘⣼⢸⣿⣿⢸⠈⠀⡙⢿⣿⣿⣧⣤⣿⣿⣿⣿⣿⣿⠇⡆⣸⡇⣿⣿⣿⣿⠀⣦⢠⠈⠘⣿⣿⡇⠻⠀⠀⢻⡀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⡿⠃⢠⣾⣿⡟⠀⣸⣿⢸⣿⣿⢸⠀⢸⣿⡦⡙⢿⣿⣿⣿⣿⣿⣿⠿⢋⣠⡆⡿⢸⣿⣿⣿⣿⠀⠛⠈⣿⡆⣿⣿⣿⡸⣦⠀⠀⢻⡄⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣟⠟⠀⢀⣾⣿⡟⠀⣴⣿⠁⣿⣿⣿⢸⢀⣿⣿⢡⣿⣦⠙⠿⠟⠛⠉⣤⣴⢁⣿⢠⢇⣿⡟⢸⣭⣴⣶⢀⢣⣿⡇⢿⣿⣿⡇⢿⡆⠰⠀⢻⣄ ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣶⣿⣿⡇⠀⢠⣿⣿⣿⢃⣼⣿⡏⣎⣿⣿⣿⢸⢁⣿⠏⣼⣿⣿⡀⢸⣿⡇⠀⢿⡏⡾⠟⡈⣼⣿⢱⣿⣿⣿⣿⠈⢸⣿⢷⢸⣿⣿⣿⠸⣷⡀⠂⠀⢿ ⠀⠀⠀⠀⠀⠀⢀⣴⣿⡿⠋⣽⠄⣰⣿⣿⡟⠑⠿⣿⡿⠀⣾⡟⢹⣿⢸⢸⡟⢠⣿⣿⣿⠀⢸⣿⠁⠀⠈⢁⣶⣇⣠⣿⡏⣾⣿⣿⣿⣿⡄⠘⣿⠘⠀⢿⣿⣿⡆⣿⣷⡈⠀⠈ ⠀⠀⠀⠀⠀⣠⣾⣿⠟⠀⠀⡟⣸⣿⡿⢫⣾⣿⣷⡿⠁⣽⠟⡡⣸⣿⢸⡞⠀⣈⣿⣿⡇⣸⢸⡿⠀⢸⠀⢸⡿⢸⣿⡿⢸⣿⣿⡿⠟⠛⣃⠀⣿⡇⡆⠸⣿⣿⣿⠘⣿⡧⠐⠀ ⠀⠀⠀⢀⣴⣿⡿⠃⠀⠀⣰⣿⣿⡿⢡⣄⠻⠿⠟⢡⣴⠏⣼⡇⣿⡇⠀⣰⢃⣿⡿⣿⠁⡇⣾⡇⠀⠞⣠⣾⢃⣿⣿⢃⣿⢟⣵⡖⢋⣉⡉⡉⣹⡷⢀⠀⣿⣿⣿⣇⠻⣷⣄⠀ ⠀⠀⢀⣾⣿⠟⠀⠀⢀⣾⣿⠿⠍⣠⣍⢻⠶⢋⣴⠿⢡⣾⣿⠁⣿⡇⢸⡏⣸⣿⢃⡟⣸⢀⡿⢃⢰⣿⣿⢸⣿⣿⠋⢈⣁⣸⣿⣿⣷⣶⡾⢟⡘⢿⣶⣶⣶⣶⣮⣭⣤⡹⣿⣆ ⠀⢠⣿⣿⠏⣠⣽⣰⣿⡋⣤⣶⡌⣿⡟⢠⣾⡇⠁⣠⣿⡿⠁⡀⣿⡇⣿⢡⣿⠏⡾⢀⣹⡸⢁⣠⣿⣿⡏⢈⣿⡟⠀⣛⡻⠁⠙⠌⠛⢯⣴⣿⠟⣈⠻⢦⡶⢶⣶⠖⣢⣍⠸⣿ ⣾⣿⠟⣠⣾⡾⢿⡇⠹⣿⢸⡟⣠⣦⣾⢃⢮⣾⡿⢋⠔⣠⣾⡧⣿⢸⠟⢃⡾⠋⢀⠾⣿⣿⢿⣰⡿⢏⣤⣿⠃⠜⡁⠀⠀⢠⠞⣁⡾⢁⣼⣿⣿⣿⣿⣿⠿⠿⣿⣿⣿⡿⣿⣿ ⢠⣿⣿⠏⠀⢿⣿⡇⣿⣇⢸⣿⡇⣿⢻⣿⢏⠀⣰⣿⠟⡰⢃⡄⣿⢡⡏⣾⢏⣼⡣⠟⣫⣴⣿⡿⠟⣉⠄⣼⣿⢡⣼⠟⠀⠀⢀⣤⢀⣴⠟⣥⣾⣿⣿⣶⣤⣤⣶⣾⣿⣿⣿⡄
███████╗███████╗██████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗
╚══███╔╝██╔════╝██╔══██╗██╔═══██╗██║ ██║██║████╗ ████║
███╔╝ █████╗ ██████╔╝██║ ██║██║ ██║██║██╔████╔██║
███╔╝ ██╔══╝ ██╔══██╗██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║
███████╗███████╗██║ ██║╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║
╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝
Full keybind reference: docs/KEYBINDS.md
| Plugin | Purpose |
|---|---|
| folke/lazy.nvim | Plugin manager; lazy-loads plugins |
| nvim-lua/plenary.nvim | Lua utilities used by Telescope and others |
| ahmedkhalf/project.nvim | Project root detection; integrates with Telescope projects |
| nvim-telescope/telescope.nvim | Fuzzy finder (files, grep, LSP references, definitions, etc.) |
| nvim-telescope/telescope-ui-select.nvim | Use Telescope for UI select (e.g. LSP code actions) |
| nvim-telescope/telescope-media-files.nvim | Preview media files in Telescope |
| nvim-tree/nvim-tree.lua | File explorer sidebar |
| nvim-tree/nvim-web-devicons | Icons for buffers, file tree, statusline |
| folke/which-key.nvim | Show keybind hints after leader |
| lewis6991/gitsigns.nvim | Git signs in gutter; stage/reset hunks, blame, diff |
| numToStr/Comment.nvim | Toggle line/block comments (e.g. gcc, gbc) |
| JoosepAlviste/nvim-ts-context-commentstring | Context-aware comment strings (e.g. JSX) |
| folke/todo-comments.nvim | Highlight and search TODO/FIXME/NOTE etc. in comments |
| smoka7/hop.nvim | Motion: hop to character, word, or line |
| windwp/nvim-autopairs | Auto-close pairs (brackets, quotes) with optional Treesitter |
| akinsho/bufferline.nvim | Tab-like buffer list in the tabline |
| kdheepak/lazygit.nvim | LazyGit TUI inside Neovim |
| ellisonleao/carbon-now.nvim | Code to Carbon-style screenshot (selection) |
| mistricky/codesnap.nvim | Code snapshot to clipboard or file (visual selection) |
| goolord/alpha-nvim | Startup dashboard with shortcuts |
| catppuccin/nvim | Catppuccin Mocha theme (transparent) |
| rebelot/kanagawa.nvim | Kanagawa theme (disabled by default) |
| lukas-reineke/indent-blankline.nvim | Indent guides (ibl) |
| NvChad/nvim-colorizer.lua | Inline color preview for hex/CSS etc. |
| b0o/incline.nvim | Current buffer/context in floating window |
| nvim-lualine/lualine.nvim | Statusline (mode, file, branch, diagnostics) |
| RaafatTurki/corn.nvim | Inline diagnostics near cursor |
| aserowy/tmux.nvim | Tmux integration (copy sync, nav); disabled by default |
| williamboman/mason.nvim | LSP/formatter/linter install manager |
| williamboman/mason-lspconfig.nvim | Auto-setup LSP servers via Mason |
| neovim/nvim-lspconfig | LSP client config and keymaps (definitions, hover, rename, etc.) |
| hrsh7th/nvim-cmp | Completion menu (sources: LSP, snippets, buffer) |
| hrsh7th/cmp-nvim-lsp | LSP as completion source for nvim-cmp |
| L3MON4D3/LuaSnip | Snippet engine |
| saadparwaiz1/cmp_luasnip | LuaSnip source for nvim-cmp |
| rafamadriz/friendly-snippets | Pre-made snippets for many languages |
| stevearc/conform.nvim | Format-on-demand per filetype (e.g. stylua, prettierd, black) |
| nvimtools/none-ls.nvim | Legacy null-ls-style formatting/linting (e.g. stylua) |
| mfussenegger/nvim-dap | Debug adapter (breakpoints, step, continue) |
| rcarriga/nvim-dap-ui | DAP UI (stack, scopes, console) |
| nvim-neotest/nvim-nio | Async I/O for tests / DAP |
| nvim-treesitter/nvim-treesitter | Parsing and highlighting; incremental selection, textobjects |
| nvim-treesitter/nvim-treesitter-textobjects | Move by function/class/scope (e.g. ]m, [[) |
| MeanderingProgrammer/render-markdown.nvim | Rendered Markdown (headings, code blocks, checkboxes, etc.) |
| mfussenegger/nvim-jdtls | Java LSP (Eclipse JDT) |
| mrcjkb/rustaceanvim | Rust LSP and tools (rust-analyzer, hover, code actions) |