Top 10 neovim plugins

· 551 words · 3 minute read

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'