List of Terms β’ Install β’ Features β’ Language servers and treesitter
You probably guessed it already, but these are my personal Neovim configuration files.
- Version Control System (VCS) A system that tracks changes to files over time. Examples include Git, Jujutsu, Mercurial, and Subversion.
- Representational State Transfer (REST)
- Language Server Protocol (LSP)
- Treesitter: A syntax parser and highlighter
- Greatest Of All Time (GOAT)
- In My Opinion (IMO)
- In My Humble Opinion (IMHO)
- Video Home System (VHS) Pretty much obsolete technology for storing and playing video cassettes. Mainly used in the 80s and 90s.
There are some prerequisites you need to have installed.
- Neovim 0.11.5+ (tested, might work on older versions, but not guaranteed)
- Node.js 22+ (for most LSP servers)
Clone this repository to your local machine:
mkdir -p ~/projects/personal
git clone https://github.com/gorillamoe/neovimfiles ~/projects/personal/neovimfilesI use shazam.sh to symlink all my dotfiles, but you can just run this command manually:
ln -s ~/projects/personal/neovimfiles ~/.config/nvimI use zana to manage most of my LSP servers, linters and formatters.
You should use whatever floats your boat. Zana works great for me, but your mileage may vary.
You should see a "Installing lazy.nvim.." and popup installing the plugins on the first run
This isn't an exhaustive list of all the plugins I use, but these are some of the main ones:
- lazy.nvim to manage my plugins. Until someone invents a better plugin manager (I doubt it), this is what I'll use.
- which-key.nvim - Available keybindings in a beautiful popup. Just blissful.
- trouble.nvim - A pretty diagnostics list.
- time-machine.nvim - View local history for a file. Inspired by GitHub's file history view. Lets you easily browse and restore previous versions of a file.
- kulala.nvim as a REST/GraphQL/Websocket/gRPC API client inside Neovim. It's a great way to test APIs without leaving Neovim. It even comes with a built-in LSP server and supports most of the features from JetBrains' HTTP Client.
- snap.nvim - Beautiful screenshots, that use your theme's colors. Take screenshots of code snippets directly from Neovim, with syntax highlighting and your color scheme. It also supports html output which works in most email clients. I was using codesnap.nvim before, but since v2 broke compatibility with my setup, I built snap.nvim as a replacement.
- kikao.nvim - Session persistence that gets out of your way. This mimics the way most IDEs handle project sessions. When you open Neovim in a project folder (if it detects a VCS folder), it'll automatically restore your last session for that project. Also makes it easy for other plugins to persist data per project.
- vhs-era as color scheme. VHS Era is a dark, vibrant, and retro-futuristic color scheme inspired by the aesthetics of the 1980s and early 1990s.
- LSP and Syntax:
- nvim-lspconfig to configure LSP servers. It's comes with sensible defaults and is easy to use.
- nvim-treesitter for syntax parsing and highlighting. Can't live without it.
- fzf-lua as fuzzy finder. The best fuzzy finder out there, IMO.
- lualine.nvim as status line. I love myself a good status line.
- nvim-cmp as completion plugin. Simply the GOAT of completion plugins for Neovim.
- File and buffer management:
- bafa.nvim - Buffer management, easy π¦₯ and uncomplicated. List buffers, close buffers, switch buffers, reorder buffers. Supports auto-sorting buffers by most recently used.
- oil.nvim as file manager. Lightweight and minimal. Use it mostly for quick file operations (moving, renaming, deleting).
- nvim-tree.lua as file explorer (barely used). (nice to have, if you're new to a project and want to quickly browse files)
- Git integration:
- gitsigns.nvim for git signs in gutter.
- [blame.nvim] to know who to blame π
- neogit as git client.
- diffview.nvim to view git diffs.
- diffconflicts.nvim to resolve merge conflicts.
- ndoo.nvim to interact with GitHub, GitLab, and Bitbucket. Fetches issues and pull/merge requests. Also supports opening files at a given line, hash or branch (opens in your default browser).
- Comments:
- todo-comments.nvim as todo comments highlighter.
- ts-comments.nvim to enhance native comments.
I have some languages configured for treesitter that I use regularly.
I also use some LSP servers for languages I use regularly.
I also have the TypeScript preview LSP server configured, which works great for JavaScript and TypeScript projects, IMHO.