Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

101 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nvim-light

Lightweight configuration focused on providing "basic features" with little boilerplate. It includes better syntax highlight, a fuzzy finder and IDE-like features powered by Neovim's LSP client.

Requirements

  • Neovim v0.5.1 or greater.
    • v0.12 is recommended
  • git.
  • tree-sitter CLI.
  • A C compiler
  • A language server. Required to actually enable the "IDE-like" features.
  • (optional) ripgrep. Improves project wide search speed.
  • (optional) fd. Improves file search speed.

Installation

  • I recommend installing Neovim's latest stable version.

  • Backup your existing configuration if you have one.

  • Create an init.lua file in your system.

    If you don't know the location of Neovim's configuration file use this command.

    nvim --headless -c 'echo stdpath("config") . "/init.lua" . "\n"' -c 'quit'

    Use whatever method you want to create the config folder and also an empty init.lua file.

  • Choose a configuration file from the configs directory and copy its content to your own init.lua. For example:

    You can check Neovim's version using this command.

    nvim --version

    If you need support for older Neovim versions, go to the configs directory of this github repository. You'll find configuration files for specific Neovim versions going all the way back to NVIM v0.5.

  • Open Neovim, use the command nvim in your terminal. When Neovim starts all plugins will be downloaded automatically.

Learn how to use Neovim as a text editor

Neovim comes with an interactive tutorial that teaches the basics of the editor. The estimated time of this tutorial is around 45 minutes. It will show you how to move around text, how to execute commands and of course how to quit Neovim. You can access the tutorial by executing this command in your terminal.

nvim +Tutor

I've also created a documentation site aimed at teaching the basic features of Neovim. Note that it is mostly about how to use Neovim as a text editor without plugins, but there is still some valuable information there:

Learn the basics of lua and Neovim's api

This configuration was created using a scripting language called lua, I highly recommend that you learn the syntax of this language. Learn just enough to know what is valid. Here are a couple resources:

Next step is to get familiar with Neovim's lua api, so you can create your own keybindings and commands. Here are a couple of guides you can read:

About language servers

They are external programs that provide IDE-like features to Neovim. If you want to know more about language servers watch this wonderful 5 minutes video: LSP explained.

To know what language servers are supported you need to go to nvim-lspconfig's documentation, in configs.md you'll find links and instruction on how to install them.

Once you have a language server available in your system you need to enable it. Here's an example using the language server for lua, lua_ls.

On Neovim v0.10 or lower you must use the "legacy setup" function.

require('lspconfig').lua_ls.setup({})

On Neovim v0.11 or greater you can use the function vim.lsp.enable().

vim.lsp.enable('lua_ls')

Tip

Copy the content of .luarc.json of this github repository into your own .luarc.json. This file should be located next to your init.lua. With it the language server for lua will provide basic support for Neovim's lua api.

About syntax highlight

To get a more accurate syntax highlight for your favorite language you need to download something called a "treesitter parser."

Treesitter is the reason we need a C compiler available in the system. Long story short, treesitter's main job is to read the source code of a file and turn that into a data structure. Once this data structure is generated Neovim can start doing things with it. Syntax highlight being one of those things. Why we need a C compiler? Because treesitter does not support any programming language out of the box. We need a treesitter parser, which is the component that deals with the specific syntax of a language. So each programming language has its own treesitter parser. And for Neovim to use a parser it needs to be compiled.

To install and compile treesitter parsers we use plugins. In this case: nvim-treesitter. This plugin provides the command :TSInstall, with it you can install one or more treesitter parsers. This is an example:

:TSInstall lua c vim vimdoc query

You can use the tab completion of the command to list all the supported languages.

Now you should know that nvim-treesitter had a big rewrite in 2025. Some "quality of life" features were removed from the plugin. So make sure you read the documentation of the version you are using.

  • On Neovim v0.12 and greater features must be enabled manually for each filetype. See: Supported features.

  • Neovim v0.11 and lower use an older version of nvim-treesitter. In this case features are enabled via modules inside nvim-treesitter itself: See Modules

About the plugin manager

Neovim v0.12 and greater will use vim.pack, the builtin plugin manager.

Neovim v0.11 or lower use a third-party plugin manager, mini.deps.

Keybindings

Leader key: Space.

Mode Key Action
Normal gy Copy text to clipboard.
Normal gp Paste text from clipboard.
Normal K Displays hover information about the symbol under the cursor.
Normal gd Jump to the definition.
Normal gq Format code in current buffer.
Normal gO Lists symbols in the current buffer.
Normal <C-s> Displays a function's signature information.
Normal gri Lists all the implementations for the symbol under the cursor.
Normal grr Lists all the references.
Normal grn Renames all references to the symbol under the cursor.
Normal gra Selects a code action available at the current cursor position.
Normal grd Jump to declaration.
Normal grt Jumps to the definition of the type symbol
Normal <Ctrl-w>d Show diagnostics in a floating window.
Normal [d Move to the previous diagnostic.
Normal ]d Move to the next diagnostic.
Normal gcc Toggle comment in current line.
Operator gc Toggle comment in text.
Operator sa Add surrounding.
Normal sd Delete surrounding.
Normal sr Surround replace.
Normal sf Find surrounding.
Normal <leader>e Toggle file explorer.
Normal <leader>bc Close current buffer and preserve window layout.
Normal <leader>? Search oldfiles history.
Normal <leader><space> Search open buffers.
Normal <leader>ff Find file in current working directory.
Normal <leader>fg Search pattern in current working directory. Interactive "grep search".
Normal <leader>fd Search diagnostics in current file.
Normal <leader>fs Search pattern in current file.

Autocomplete keybindings

Mode Key Action
Insert <Up> Move to previous item.
Insert <Down> Move to next item.
Insert <Ctrl-p> Move to previous item and insert content.
Insert <Ctrl-n> Move to next item and insert content.
Insert <Ctrl-y> Confirm completion.
Insert <Enter> Confirm completion if item was selected with Up or Down arrows.
Insert <Ctrl-e> Cancel completion.

Plugin list

Name Description
tokyonight.nvim Collection of colorscheme for Neovim.
which-key.nvim Provide clues for keymaps.
mini.nvim Collection of independent lua modules that enhance Neovim's features.
nvim-treesitter Manage treesitter parsers and provide query files for the supported languages.
nvim-lspconfig Quickstart configs for Neovim's LSP client.

About

Lightweight configuration for Neovim focused on providing "basic features" in about 200 lines of code.

Resources

Stars

71 stars

Watchers

3 watching

Forks

Contributors

Languages