- Neovim 0.5.0+ New Features
- Reference
- Installation
- Getting Started with Lua-Based Neovim config
- Plugins
- all the IDE-like goodies:
- LSP completion, go to def, hover and rename
- treesitter syntax highlighting
- ctrlp-like fuzzy finding
- embedded terminals
# MacOS
brew install --HEAD tree-sitter luajit neovim fzf fd
# Archlinux
sudo pacman -S tree-sitter luajit neovim fzf fd
- Lua is a much nicer language
- More modular
- Easier to customize
- Easier to configure lua plugins
Set using vim.api.nvim_set_keymap({mode}, {keymap}, {mapped to}, {options})
Example
" Ctrl-s to Save
nmap <c-s> :w<CR>
imap <C-s> <Esc>:w<CR>a
" Ctrl+hjkl to navigate splits
nnoremap <c-h> <c-w>h
nnoremap <c-j> <c-w>j
nnoremap <c-k> <c-w>k
nnoremap <c-l> <c-w>l
Now converted to
local keymap = vim.api.nvim_set_keymap
keymap('n', '<c-s>', ':w<CR>', {})
keymap('i', '<c-s>', ':<Esc>:w<CR>a', {})
local opts = {noremap = true}
keymap('n', '<c-h>', '<c-w>h', opts)
keymap('n', '<c-j>', '<c-w>j', opts)
keymap('n', '<c-k>', '<c-w>k', opts)
keymap('n', '<c-l>', '<c-w>l', opts)
Use Packer
as the default plugin manager
In Archlinux
, we can install from AUR: yay -S nvim-packer-git
Start with having packer manage itself:
require('packer').startup(function()
use 'wbthomason/packer.nvim'
-- add other use ... for other packages
end)
Then we can run :PackerSync
which will download/install the list of defined plugins
- nvim-lspconfig - a collection of configurations for Neovim's built-in LSP
- treesitter - syntax highlight for Neovim's built-in LSP
- telescope.nvim - extendable fuzzy finder over lists
- lualine - a blazing fast and easy to configure Neovim statusline written in Lua
- nvim-cmp - completion engine
- vim-surround - mappings to easily delete, change and add surroundings in pairs
- formatter.nvim - A format runner for neovim, written in lua
- nodejs
- npm
- yarn
# Install yarn
sudo npm i -g yarn
# gopls
go install golang.org/x/tools/gopls@latest
# golangci-lint
go install github.com/golangci/golangci-lint/cmd/golangci-lint@lastet
# go formatter (comes with the go binary)
sudo pacman -S go
# lua formatter
sudo pacman -S stylua
# shell script formatter
sudo pacman -S shfmt
# ctags
sudo pacman -S ctags
# typescript, javascript, markdown, JSON formatter
sudo npm install -g prettier
# yamlfmt
pip3 install yamlfmt
# python formatter
sudo pacman -S python-black
# ruby formatter (required PATH setup)
gem install rubocop
# terragrunt(terraform) formatter (comes with terragrunt/terraform)
sudo pacman -S terraform terragrunt
- markdown-preview.nvim - markdown preview plugin for (neo)vim