My nvim-lua setup
What's in this repo?
My personal neovim lua config (requires neovim >= 0.8
)
- Minimum changes to default key mapping
- A good selection of carefully hand-picked plugins
- Lazy load plugins where possible
- Which-key to rule them all
- Misc utilities and goodies
Plugins & Packages
-
lazy.nvim: lua plugin manager to auto-install and update our plugins
-
mason.nvim: automatic installation of LSP servers using the
:Mason
command
Basics
-
smartyank.nvim: only pollute the clipboard when you really mean it!
-
mini.surround: adds the missing operators (
ds
,cs
,ys
) for dealing with pairs of "surroundings" (quotes, tags, etc)
Git
-
vim-fugitive: git porcelain and plumbing in one by tpope, the Swiss army knife of git
-
gitsigns: git gutter indicators and hunk management
Coding, completion & LSP
-
Comment.nvim: use
gc
andgcc
to comment visual-blocks and lines -
mini.indentscope: add indentation markers based on
tabstop | shiftwidth
-
nvim-cmp: autocompletion framework
-
treesitter: text parsing library, provides better syntax highlighting and text-objects for different coding languages (e.g.
yaf
yank-a-function), see treesitter.lua for defined text objects -
lspconfig: configuration quickstart for nvim's built in LSP
-
null-ls.nvim: pseudo LSP server to help us format JS|web files with
prettier
ongq
-
nvim-dap: set breakpoints and debug applications using Debug Adapter Protocol (DAP)
-
fidget.nvim: Eye candy LSP progress indicator above the status line (top right)
Fuzzy search & file exploration
-
fzf-lua: the original, tried and tested fuzzy finder, lua plugin that does pretty much everything, written by yours truly
-
telescope.nvim: fuzzy search framework for searching project files, buffers, ripgrep and much more
-
nvim-tree: file-explorer tree
Misc
-
which-key: a must plugin in every setup, when leader key (and some built-ins) sequence is pressed and times out which-key will generate a help window with your keybinds and also let you continue the sequence at your own pace
-
toggleterm.nvim: better term and REPLs (use
gx
andgxx
to send REPLs to an interpreter) -
previm: live preview markdown files in the browser with
<space>r
Appearence
-
express_line: TJ's status line plugin, customized and highlighted by me and, LSP/diag patched to work on any neovim >= 0.5
-
nvim-colorizer.lua: color code highlighter, use
ColorizerAttachToBuffer
to provide a live preview of color codes in your buffer (e.g.#d4bfff
)