Neovim Config

Lua-only Neovim — modular core / plugins / per-server LSP.

Lua-only. Modular: core/ for vim primitives, plugins/ for features, lsp/ per-server.

Tree

nvim/
├── init.lua
├── lua/
│   ├── core/
│   │   ├── options.lua
│   │   ├── keymaps.lua
│   │   └── plugins.lua
│   └── plugins/
│       ├── lsp.lua
│       ├── telescope.lua
│       └── ...
└── lsp/
    ├── lua_ls.lua
    └── pyright.lua

Stack

  • LSP: nvim-lspconfig + nvim-cmp
  • Find: telescope.nvim
  • UI: lualine.nvim (theme-synced)
  • Format: formatter.lua

Adding a language

  1. Create nvim/lsp/<server>.lua
  2. require it in init.lua
  3. Install via :Mason or system pkg

Gotcha

Lua keymap callbacks must be wrapped, not invoked. function() require('x').y() end, not require('x').y().

Essential Keymaps

The editor is tuned for rapid navigation and minimal mode-switching:

  • leader + pv: Open File Explorer (Ex).
  • leader + pt: Open integrated terminal in a bottom split.
  • jj: Exit Insert mode (The fastest exit).
  • Ctrl + h/l: Navigate between splits.
  • v + J/K: Move selected blocks of code vertically.

System Clipboard Integration

I bypass the internal register for global utility:

vim.keymap.set({'n', 'v'}, '<leader>y', '"+y') -- Yank to System
vim.keymap.set({'n', 'v'}, '<leader>p', '"+p') -- Paste from System