Skip to content

Neovim

Tips-And-Tricks

LazyVim

LazyVim is a collection of plugins and is built on top of lazy.vim. LazyVim is a Neovim setup powered by 💤 lazy.nvim to make it easy to customize and extend your config.

TreeSitter

TreeSitter in nvim is used for better syntax highlighting.

Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. Tree-sitter aims to be:

  • General enough to parse any programming language
  • Fast enough to parse on every keystroke in a text editor
  • Robust enough to provide useful results even in the presence of syntax errors
  • Dependency-free so that the runtime library (which is written in pure C) can be embedded in any application

  • tree-sitter: An incremental parsing system for programming tools

  • Documentation
  • nvim-treesitter: Nvim Treesitter configurations and abstraction layer

nvim-treesitter-textobjects

github: Syntax aware text-objects, select, move, swap, and peek support.

nvim-treesitter-context

github: Show the function you are in at the top of the buffer.

A Vim plugin that shows the context of the currently visible buffer contents. It's supposed to work on a wide range of file types, but is probably most useful when looking at source code files. In most programming languages this context will show you which function you're looking at, and within that function which loops or conditions are surrounding the visible code.

Telescope

telescope.nvim

github: Find, Filter, Preview, Pick. All lua, all the time.

telescope-fzf-native.nvim

github: FZF sorter for telescope written in c. fzf-native is a c port of fzf. It only covers the algorithm and implements few functions to support calculating the score.

which-key.nvim

github: 💥 Create key bindings that stick. WhichKey is a lua plugin for Neovim 0.5 that displays a popup with possible keybindings of the command you started typing.

gitsigns.nvim

Equivalent to VCSVimdiff

github: Git integration for buffers. Super fast git decorations implemented purely in Lua.

Features

  • Signs for added, removed, and changed lines
  • Asynchronous using luv
  • Navigation between hunks
  • Stage hunks (with undo)
  • Preview diffs of hunks (with word diff)
  • Customizable (signs, highlights, mappings, etc)
  • Status bar integration
  • Git blame a specific line using virtual text.
  • Hunk text object
  • Automatically follow files moved in the index.
  • Live intra-line word diff
  • Ability to display deleted/changed lines via virtual lines.
  • Support for yadm
  • Support for detached working trees.

vim-illuminate

github: illuminate.vim - (Neo)Vim plugin for automatically highlighting other uses of the word under the cursor using either LSP, Tree-sitter, or regex matching.

trouble.Nvim

github: 🚦 A pretty diagnostics, references, telescope results, quickfix and location list to help you solve all the trouble your code is causing.

Language Sever Protocol (LSP)

mason.nvim

github: Portable package manager for Neovim that runs everywhere Neovim runs. Easily install and manage LSP servers, DAP servers, linters, and formatters.

:h mason-introduction

mason.nvim is a Neovim plugin that allows you to easily manage external editor tooling such as LSP servers, DAP servers, linters, and formatters through a single interface. It runs everywhere Neovim runs (across Linux, macOS, Windows, etc.), with only a small set of external requirements needed.

Packages are installed in Neovim's data directory (:h standard-path) by default. Executables are linked to a single bin/ directory, which mason.nvim will add to Neovim's PATH during setup, allowing seamless access from Neovim builtins (shell, terminal, etc.) as well as other 3rd party plugins.

For a list of all available packages, see https://mason-registry.dev/registry/list.

noice.nvim

github: 💥 Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.

mini.indentscopre

github: Neovim Lua plugin to visualize and operate on indent scope. Part of 'mini.nvim' library.

lualine.nvim

github: A blazing fast and easy to configure neovim statusline plugin written in pure lua.

LuaSnip

github: Snippet Engine for Neovim written in Lua.

nvim-cmp

github: A completion plugin for neovim coded in Lua. A completion engine plugin for neovim written in Lua. Completion sources are installed from external repositories and "sourced".

cmp-nvim-lsp

github: nvim-cmp source for neovim builtin LSP client.

Language servers provide different completion results depending on the capabilities of the client. Neovim's default omnifunc has basic support for serving completion candidates. nvim-cmp supports more types of completion candidates, so users must override the capabilities sent to the server such that it can provide these candidates during a completion request. These capabilities are provided via the helper function require('cmp_nvim_lsp').default_capabilities

As these candidates are sent on each request, adding these capabilities will break the built-in omnifunc support for neovim's language server client. nvim-cmp provides manually triggered completion that can replace omnifunc. See :help cmp-faq for more details.

cmp-buffer

github: nvim-cmp source for buffer words.

cmp-path

github: nvim-cmp source for filesystem paths.

cmp_luasnip

github: luasnip completion source for nvim-cmp

mini.pairs

github: Neovim Lua plugin to automatically manage character pairs. Part of 'mini.nvim' library.

mini.surround

github: Neovim Lua plugin with fast and feature-rich surround actions. Part of 'mini.nvim' library.

mini.ai

github: Neovim Lua plugin to extend and create a/i textobjects. Part of 'mini.nvim' library.

mini.comment

github: Neovim Lua plugin for fast and familiar per-line commenting. Part of 'mini.nvim' library.

nvim-notify

github: A fancy, configurable, notification manager for NeoVim.