Neovim configuration with fast startup, plugin-per-file organization, and a small toolchain built around mise, stylua, and CI validation.
mise is the toolchain manager for this repository. It is used to pin and run project tools, currently stylua.
lua/
config/ -- bootstrap, editor options, global autocmds
features/ -- local behavior such as formatting and terminal flows
keymaps/ -- mappings split by responsibility
plugins/ -- lazy.nvim plugin specs, one plugin per file
util/ -- shared helpers
mise install
npm ciThis config includes iamt4nk/smm.nvim and reads its credentials from environment variables instead of hardcoding them.
Warning
In practice, this plugin is only usable with Spotify Premium. The Spotify account that owns the developer app must have an active Premium subscription, or the Web API playback endpoints will return 403.
- Create a Spotify app at https://developer.spotify.com/dashboard.
- Add yourself in the app's
User Management. - Add a redirect URI such as
http://127.0.0.1:8888. - Copy
.env.exampleto.env. - Fill in these variables:
SPOTIFY_CLIENT_ID=your-client-id
SPOTIFY_CALLBACK_URL=http://127.0.0.1
SPOTIFY_CALLBACK_PORT=8888This config loads .env automatically during startup. Then run :Spotify or use <leader>ms to start the OAuth flow and open the playback window.
npm run format:lua
npm run format:lua:check
nvim --headless +qaNavigation
| Key | Mode | Action |
|---|---|---|
<Left> / <Down> / <Up> / <Right> |
normal, visual | Use h, gj, gk, l style movement. |
<Home> / <End> |
normal, visual | Jump to first non-blank char or end of line. |
<C-Left> / <C-Right> |
normal, visual, insert | Move by word. |
<C-S-Left> / <C-S-Right> |
normal, visual, insert | Select or extend by word. |
<C-S-Up> / <C-S-Down> |
normal, visual, insert | Select or extend by display line. |
Editing
| Key | Mode | Action |
|---|---|---|
<C-BS> / <C-h> |
insert | Delete the previous code chunk, not just a plain word. |
<C-w> |
insert | Uses the same code-aware backward delete behavior. |
<C-BS> / <C-h> |
normal, visual | Delete the previous selection chunk backward. |
<BS> |
visual | Delete selection into the black hole register. |
Clipboard And Save
| Key | Mode | Action |
|---|---|---|
<C-x> |
normal, visual | Cut to system clipboard. |
<C-c> |
normal, visual | Copy to system clipboard. |
<C-v> |
normal, visual | Paste from system clipboard. |
<C-z> / <C-y> |
normal, visual | Undo / redo. |
<C-s> |
normal, visual, insert | Save current buffer. |
<C-a> |
normal, insert | Select the entire buffer. |
Window Management
| Key | Mode | Action |
|---|---|---|
<C-q> |
normal | Close current buffer. |
<leader>v / <leader>h |
normal | Vertical split / horizontal split. |
<leader>q / <leader>o |
normal | Close current window / keep only current window. |
<leader><Left> / <leader><Down> / <leader><Up> / <leader><Right> |
normal | Move across windows. |
UI And Search
| Key | Mode | Action |
|---|---|---|
<leader>e |
normal | Open oil.nvim in the current directory. |
<leader><leader> |
normal | Find files with Telescope. |
<leader>ms |
normal | Open smm.nvim / Spotify playback. |
<C-p> |
normal | Open recent buffers with Telescope. |
<leader>g |
normal | Run live grep with Telescope. |
<Esc> |
normal | Clear search highlight and keep escape behavior. |
<Esc> |
insert, visual, select, operator-pending | Keep plain escape behavior explicit. |
Terminal
| Key | Mode | Action |
|---|---|---|
<Esc> |
terminal | Leave terminal mode. |
<C-\> / Ctrl+\`` / //<C-@>` |
normal, terminal | Toggle the last floating terminal. |
<leader>tn |
normal | Create a new floating terminal. |
<leader>ts |
normal | Pick an existing terminal from the Telescope selector. |
<leader>tk |
normal | Close the last terminal. |
- Startup benchmark (
nvim --startuptime, 5 runs):17.20 msmin,21.47 msavg,30.78 msmax. - Plugin count:
29 - Loaded during measured session:
21 - Benchmark logs can be generated locally with:
nvim --startuptime startup.log +qa| Plugin | Description |
|---|---|
| blink.cmp | Completion engine. |
| colorful-winsep.nvim | Animated colored window separators. |
| flash.nvim | Fast in-buffer motion and jump UI. |
| github-nvim-theme | GitHub-themed colorscheme. |
| gitsigns.nvim | Git hunks in the sign column. |
| indent-blankline.nvim | Indent guides. |
| lazydev.nvim | Better Lua dev experience for Neovim config. |
| lualine.nvim | Statusline. |
| luau-lsp.nvim | Luau and Roblox LSP integration. |
| mason-lspconfig.nvim | Bridges Mason with lspconfig. |
| mason.nvim | External tool and LSP installer. |
| neoscroll.nvim | Smooth scrolling. |
| noice.nvim | Improved command line, messages, and popup UI. |
| nvim-autopairs | Auto-closes brackets and quotes. |
| nvim-lspconfig | LSP server configuration. |
| nvim-notify | Better notification UI. |
| oil.nvim | File explorer as an editable buffer. |
| render-markdown.nvim | Better Markdown rendering. |
| smm.nvim | Spotify playback manager and controller. |
| smear-cursor.nvim | Cursor trail animation. |
| tabby.nvim | Custom tabline. |
| telescope.nvim | Fuzzy finder for files, buffers, and grep. |
| tiny-inline-diagnostic.nvim | Compact inline diagnostics. |
| toggleterm.nvim | Floating terminal management. |
| transparent.nvim | Transparent editor background. |
MIT. See LICENSE.