My nvim config including plugins and keybindings can be found here
Vim plug
You’ll need the following in your nvim/lua/plugins.lua
.
See my guide on Getting started with Neovim for an in depth understanding of configuring Neovim.
1-- check if vimplug is installed, if not install it
2vim.cmd([[
3if empty(glob('~/.config/nvim/autoload/plug.vim'))
4 silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs
5 \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
6endif
7]])
8
9local Plug = vim.fn['plug#']
10vim.call('plug#begin', '~/.config/nvim/plugged')
11 -- add plugins you want to install here
12vim.call('plug#end')
1. auto-pairs
Insert or delete brackets, parens, quotes in pair
Add to neovim:
1 -- automatically add "([ pairs if first one is typed
2 Plug 'jiangmiao/auto-pairs'
2. vim-commentary
Work with comments, vim commentary allows you to toggle the comment of the current visual selection using gc
.
Knows what file type wants which comment prefix / style.
1 -- comment helper
2 Plug 'tpope/vim-commentary'
3. nvim-tree and nvim-web-devicons
File explorer written in lua. Its fast, watches for changes and allows basic file management.
1 -- file explorer
2 Plug 'nvim-tree/nvim-tree.lua'
3 -- icons for everything, file explorer, tabs, statusline
4 Plug 'nvim-tree/nvim-web-devicons'
4. toogle-term
A neovim lua plugin to help easily manage multiple terminal windows
1 -- toggle floating term
2 Plug 'akinsho/toggleterm.nvim'
Hint
Keybind for toggling the terminal window
1-- toggleterm tree setup
2require("toggleterm").setup{
3 open_mapping = [[<c-J>]],
4 direction = 'float',
5}
5. coc.nvim
Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.
Specifically usefull for language server integration (linting, formatting)
Hint
Take a look at my guide for coc.nvim: Install & Configure coc.nvim.
I cover the following topics:
- installation
- installation of extension
- keybindings
- configuration
1 -- vscode extension provider
2 Plug 'neoclide/coc.nvim'
6. fzf.vim
Fuzzy finder for files via names and text content.
Hint
For in depth installation, configuration and keybindings take a look at my guide for fzf.nvim here: Install & Configure FzF in Neovim.1 -- fuzzy finder
2 Plug('junegunn/fzf', { ['do'] = vim.fn['fzf#install()'] })
3 plug('junegunn/fzf.vim')
7. lualine.nvim
Fast and easy to configure neovim statusline plugin.
1 -- status line
2 Plug 'nvim-lualine/lualine.nvim'
Hint
Set a theme:
1-- lualine
2require('lualine').setup {
3 options = {
4 theme = bubbles_theme,
5 }
6}
8. bufferline.nvim
Plugin to better display buffers and tabs.
1 -- display buffers and tabs nicely
2 Plug 'akinsho/bufferline.nvim'
Hint
Only display tabs not buffers:
1-- bufferline config
2require("bufferline").setup{
3 options = {
4 -- only display tabs, hide buffers
5 mode = "tabs",
6 -- style for kitty terminal
7 separator_style = "slant",
8 -- display coc diagnostics
9 diagnostics = "coc"
10 }
11}
9. vim-startify
Clean starting dashboard
1 -- startup interface
2 Plug 'mhinz/vim-startify'
10. indentLine
Plugin to highlight indentations, such as tab stops.
1 -- highlights indent
2 Plug 'yggdroot/indentLine'
Honorable mentions
Color theme
My current fav vim theme is: Tokyonight
Installing:
1 -- color theme / sheme
2 Plug('folke/tokyonight.nvim', { branch = 'main' })
Setting the theme
1-- set colorsheme
2vim.cmd([[colorscheme tokyonight-night]])
Syntax highlighter and ast generator
1 -- syntax highlighting and parser
2 Plug(
3 'nvim-treesitter/nvim-treesitter',
4 {['do'] = vim.fn['TSUpdate']}
5 )
Time tracking with wakatime
1 -- time tracking
2 Plug 'wakatime/vim-wakatime'