Personal Neovim configuration for a fast, keyboard-focused editor setup with lazy-loaded plugins, Rose Pine styling, Telescope navigation, Harpoon marks, LSP support, formatting, diagnostics, and Git helpers.
This repository contains my Neovim config. The entry point is init.lua, which loads the lua/dadima/ modules:
lua/dadima/init.luawires the config together.lua/dadima/lazy.luabootstraps lazy.nvim and imports plugin modules in load order.lua/dadima/plugins.luadeclares shared plugin specs, theme setup, and Telescope.lua/dadima/languages.luadefines language toolchain wiring shared by LSP, formatting, linting, and Treesitter.lsp/ruff.luadefines the Ruff language server config for Neovim 0.11+ (ty owns hover; seelua/dadima/lsp.lua).lua/dadima/format.luaconfigures conform.nvim formatting.lua/dadima/lint.luaconfigures nvim-lint.lua/dadima/lsp.luaconfigures language servers, completion, and LSP-specific settings.lua/dadima/go.luadefines Go-only buffer-local snippets.lua/dadima/treesitter.luaconfigures Treesitter.lua/dadima/markdown.luadisables the unstable Markdown Treesitter path and is loaded before lazy.nvim.lua/dadima/harpoon.luaconfigures Harpoon navigation and keymaps.lua/dadima/git.luaconfigures Git integrations.lua/dadima/undotree.luaconfigures undo history.lua/dadima/remap.luadefines keymaps.lua/dadima/set.luadefines editor options and global diagnostic display behavior.lazy-lock.jsonpins plugin versions.
This is mainly for me and for anyone who wants to study or reuse a macOS-oriented Neovim setup with modern JavaScript, Python, LSP, formatting, fuzzy finding, and Git workflows.
Back up your current Neovim config first if you already have one:
mv ~/.config/nvim ~/.config/nvim.backupClone this repository into Neovim's config directory:
git clone https://github.com/tusharxoxoxo/nvim-config-super-duper-octo-fiesta ~/.config/nvimOpen Neovim:
nvimlazy.nvim will bootstrap itself on first launch. Install the prerequisites listed below before expecting every plugin and keymap to work.
There is no separate build step for this project. Use these commands as smoke checks:
nvim --headless +qa
nvim --headless "+Lazy! sync" +qa
nvim --headless "+checkhealth" +qaThe first command checks that Neovim can start with this config. The second syncs plugins. The third opens Neovim's health checks.
Keep changes small and focused. Before changing mappings, plugin behavior, or workflow notes, read the existing sections below and jj.md so the config stays consistent with the current habits documented here.
Useful areas to check before contributing:
lua/dadima/remap.luafor keymapslua/dadima/plugins.luafor shared plugin specs, theme setup, and Telescopelua/dadima/languages.luafor shared language toolchain entrieslua/dadima/format.luaandlua/dadima/lint.luafor formatting and linting plugin behaviorlua/dadima/go.luafor Go-only buffer-local snippetslua/dadima/lsp.lua,lua/dadima/harpoon.lua,lua/dadima/git.lua,lua/dadima/treesitter.lua, andlua/dadima/undotree.luafor focused plugin setuplua/dadima/markdown.luafor Markdown Treesitter guards that affect startup and formatting behaviorlua/dadima/set.luafor editor options and diagnostic display settingsjj.mdfor the repo workflow notes
This project is licensed under the MIT License. See LICENSE.
Current setup with transparent background and rose-pine theme:
Background image for transparent terminal:
- Required: ripgrep for telescope search
- Recommended: Nerd Font for better icons
- Optional: tmux for enhanced workflow
- Fast startup with lazy loading
- Rose-pine theme with transparent background
- Telescope for fuzzy finding
- Harpoon for quick file navigation
- Modern LSP setup with Mason-managed tools
- Smart formatting with conform.nvim plus Oxc and Ruff
- Git integration with fugitive and gitsigns
- Modern JS/Python tooling with VoidZero and Astral
Space is the leader key
All shortcuts are optimized for macOS and avoid system conflicts
This README is a personal reference sheet that includes custom mappings, plugin commands, and useful built-in Vim commands.
| Shortcut | Action |
|---|---|
nvim . |
Open netrw in current directory |
<leader>pv |
Open file explorer |
:Ex |
Open netrw explorer |
% |
Create new file (in netrw) |
d |
Create new directory (in netrw) |
| Shortcut | Action |
|---|---|
<leader>pf |
Find files by name |
<C-p> |
Find git files |
<leader>ps |
Live grep (search in files) |
<leader>vh |
Help tags |
| Shortcut | Action |
|---|---|
<leader>a |
Add current file to harpoon |
<C-e> |
Toggle harpoon menu |
<C-h> |
Navigate to harpoon file 1 |
<C-t> |
Navigate to harpoon file 2 |
<C-n> |
Navigate to harpoon file 3 |
<C-s> |
Navigate to harpoon file 4 |
<A-p> |
Navigate to previous mark |
<A-n> |
Navigate to next mark |
| Shortcut | Action |
|---|---|
J (visual) |
Move selected lines down |
K (visual) |
Move selected lines up |
<C-d> |
Page down (centered) |
<C-u> |
Page up (centered) |
n |
Next search match (centered) |
N |
Previous search match (centered) |
ciw |
Change inner word |
=ap |
Indent entire paragraph |
= (visual) |
Indent selected lines |
| Shortcut | Action | Original Command |
|---|---|---|
<leader>y |
Copy to system clipboard | "+y |
<leader>Y |
Copy line to system clipboard | "+Y |
"+p |
Paste from system clipboard | "+p |
gg<leader>yG |
Copy entire file to clipboard | gg"+yG |
<leader>p (visual) |
Paste without overwriting register | "_dP |
| Shortcut | Action |
|---|---|
/pattern |
Search for pattern |
<leader>s |
Substitute word under cursor |
:%s/old/new/g |
Replace all occurrences globally |
:%s/old/new/gc |
Replace with confirmation |
:s/old/new/g |
Replace in current line |
| Shortcut | Action |
|---|---|
gd |
Go to definition |
gr |
Show references |
gi |
Go to implementation |
go |
Go to type definition |
K |
Show hover documentation |
gs |
Signature help |
<leader>rn |
Rename symbol |
<leader>ca |
Code actions |
<C-o> |
Jump back |
<C-i> |
Jump back forward (reverse of the above command |
*note, don't change the above command action details, i have written it differently for my own convinience
| Shortcut | Action |
|---|---|
gl |
Show line diagnostics |
[d |
Previous diagnostic |
]d |
Next diagnostic |
<leader>ld |
Open diagnostics list |
| Shortcut | Action |
|---|---|
<C-Space> |
Trigger completion |
<Tab> |
Next completion item |
<S-Tab> |
Previous completion item |
<CR> |
Confirm selection |
<C-e> |
Abort completion |
| Shortcut | Action |
|---|---|
<leader>gg |
Open LazyGit (q to exit) |
<leader>gs |
Git status (fugitive) |
]c |
Next git hunk |
[c |
Previous git hunk |
<leader>hs |
Stage hunk |
<leader>hr |
Reset hunk |
<leader>hp |
Preview hunk |
| Shortcut | Action |
|---|---|
<leader>u |
Toggle undo tree |
<leader>fm |
Format file or selection (oxfmt/ruff/stylua) |
<leader>x |
Make file executable |
:Lazy sync |
Update plugins |
| Shortcut | Action |
|---|---|
s<char><char> |
Jump to two-character sequence |
; |
Repeat last sneak forward |
S |
Sneak backwards |
<C-o> |
Jump back to starting position |
| Shortcut | Action |
|---|---|
:TSPlaygroundToggle |
Toggle treesitter playground |
| Shortcut | Action |
|---|---|
vi" |
Select inside quotes |
vi( |
Select inside parentheses |
cit |
Change inside HTML tags |
dit |
Delete inside HTML tags |
. |
Repeat last command |
:set wrap |
Enable line wrapping |
| Shortcut | Action |
|---|---|
<C-w>w |
Switch between windows |
<C-w>h/j/k/l |
Navigate windows |
<C-w>s |
Split horizontally |
<C-w>v |
Split vertically |
| Shortcut | Action |
|---|---|
<leader>ee |
Insert error return pattern |
<leader>ea |
Insert assert.NoError |
<leader>ef |
Insert log.Fatalf error handling |
<leader>el |
Insert logger.Error pattern |
- lazy.nvim - Modern plugin manager
- telescope.nvim - Fuzzy finder
- harpoon - Quick file navigation
- nvim-lspconfig - LSP integration
- nvim-cmp - Autocompletion
- conform.nvim - Code formatting
- nvim-treesitter - Syntax highlighting
- vim-fugitive - Git integration
- undotree - Undo history visualization
- vim-sneak - Enhanced movement
- rose-pine - Beautiful theme
- The configuration uses a transparent background for terminal aesthetics
- Mason is available for manual tool installation; configured LSP servers are hard-enabled and expected to be installed through Mason or otherwise available on
PATH - Formatting is handled by conform.nvim with
oxfmt, Ruff, Stylua, and others - JavaScript/TypeScript use
tsgofor LSP andoxlint/oxfmtfor linting and formatting - Python uses Ruff plus
tyfor fast linting, formatting, imports, and language features - All plugins are lazy-loaded for optimal startup performance
Configuration last updated: march 2026
Feel free to use and modify - attribution appreciated!
