/awesome-neovim

Awesome Configurations for C/C++, Zig, Rust, Python, Shell, Web and Lua development in NeoVim

Primary LanguageLuaGNU General Public License v3.0GPL-3.0

Awesome Neovim Configuration

This repo it to make setting up of neovim >= 0.9 a breeze. The setup is powered and managed by ๐Ÿ’ค lazy.nvim plugin manager

If you like helix, which I am drifting to gradually, check out my helix config

โœจ Features Supported

  • โšก zig, ๓ฐ™ฑ C , ๎˜ C++, ๓ฐขฑ lua and all other language compilers
  • ๐Ÿ“ฆ linters and static analysis through null-ls
  • ๐Ÿฅ‚ lsp servers configured with nvim-lspconfig
  • ๐Ÿงน autocompletion, formatters and all other features supported by neovim's builtin lsp
  • ๐Ÿฆธ Any build system
  • โœด๏ธ Treesitter syntax highlighting
  • ๐Ÿ”ฅ Transform your Neovim editor into a full-fledged IDE
  • ๐Ÿ’ค Easily customize and extend config
  • ๐Ÿš€ Blazingly fast using ๐Ÿ’ค lazy.nvim and the new lua-loader that byte-compiles and caches lua files

๐Ÿ˜ Screenshots

๎˜ C++

c++ with code action c++ with errors

โšก Zig

Zig(onedark colorscheme) with error Zig(onedark colorscheme) struct hovered

๓ฐขฑ Lua

Lua with with errors Lua with preview definition

๐Ÿš€ Startup Time

startup time with zig

โšก๏ธ Requirement

  • Neovim >= 0.9.0 (needs to be built with LuaJIT)
  • git >= 2.40.0 (gitsigns ...)
  • tree-sitter >= 0.20.8 (to enable automatically installing missing parsers when entering buffers)
  • a Nerd Font (optional, for nvim-tree, lualine, bufferline)

NOTE the languages supported out of the box are zig, c++, c, lua, bash/zsh, glsl, json But support for other languages like(js, ts, html5+, css3+, vue, markdown, nix) can easily be add by using its required lsp server configuration and installing the server and other accompanying tools for development like linters, static analysers, formatter

๐Ÿ“‚ Directory structure

    ๐Ÿ“‚ ~/.config/nvim
    โ”œโ”€โ”€ ๐Ÿ“‚ ftplugin
    โ”‚  โ””โ”€โ”€ ๐Ÿ“‚ lua
    โ”‚  โ”‚   โ””โ”€โ”€ ๎˜  mapping.lua
    โ”‚  โ”œโ”€โ”€ ๎˜  gitcommit.lua
    โ”‚  โ”œโ”€โ”€ ๎˜  help.lua
    โ”‚  โ””โ”€โ”€ ๎˜  zsh.lua
    โ”œโ”€โ”€ ๐Ÿ“‚ lua
    โ”‚  โ””โ”€โ”€ ๐Ÿ“‚ config
    โ”‚  โ”‚   โ”œโ”€โ”€ ๎˜  autocmds.lua
    โ”‚  โ”‚   โ”œโ”€โ”€ ๎˜  defaults.lua
    โ”‚  โ”‚   โ”œโ”€โ”€ ๎˜  init.lua
    โ”‚  โ”‚   โ”œโ”€โ”€ ๎˜  keymaps.lua
    โ”‚  โ”‚   โ”œโ”€โ”€ ๎˜  lazy.lua
    โ”‚  โ”‚   โ”œโ”€โ”€ ๎˜  options.lua
    โ”‚  โ”‚   โ”œโ”€โ”€ ๎˜  syntax.lua
    โ”‚  โ”‚   โ””โ”€โ”€ ๎˜  utils.lua
    โ”‚  โ””โ”€โ”€ ๐Ÿ“‚ plugins
    โ”‚      โ”œโ”€โ”€ ๎˜  cmp.lua
    โ”‚      โ”œโ”€โ”€ ๎˜  colorscheme.lua
    โ”‚      โ”œโ”€โ”€ ๎˜  editor.lua
    โ”‚      โ”œโ”€โ”€ ๎˜  gitsigns.lua
    โ”‚      โ”œโ”€โ”€ ๎˜  lsp.lua
    โ”‚      โ”œโ”€โ”€ ๎˜  neorg.lua
    โ”‚      โ”œโ”€โ”€ ๎˜  snip.lua
    โ”‚      โ”œโ”€โ”€ ๎˜  telescope.lua
    โ”‚      โ”œโ”€โ”€ ๎˜  tree.lua
    โ”‚      โ”œโ”€โ”€ ๎˜  treesitter.lua
    โ”‚      โ””โ”€โ”€ ๎˜  ui.lua
    โ”œโ”€โ”€ ๎˜  init.lua
    โ”œโ”€โ”€ ๎˜‹ lazy-lock.json
    โ”œโ”€โ”€ ๎˜Š LICENSE
    โ””โ”€โ”€ ๏’Š README.md

ftplugin directory contains files for setting options or mappings specific to filetypes

lua/config directory contains editor autocmds, keymaps, options, defaults, syntax files, utils fn's and lazy.nvim configuration

lua/plugins directory contains all plugins configurations and their mappings

init initializing/start point for nvim editor


๐Ÿš€ Getting Started

You can find awesome-neovim here

Follow the steps below to use awesome-neovim
  • fork this repo into your account

    GitHub how to fork a repository

  • Make a backup of your current Neovim files at $XDG_CONFIG_HOME/nvim and $XDG_DATA_HOME/nvim:

    mv ~/.config/nvim ~/.config/nvim.bak
    mv ~/.local/share/nvim ~/.local/share/nvim.bak
  • Clone the repo into $XDG_CONFIG_HOME/nvim or $HOME/.config/nvim

    git clone https://github.com/${YOUR-USERNAME}/awesome-neovim $XDG_CONFIG_HOME/nvim
    
  • Start Neovim!

    nvim

โš™๏ธ For information on how to use lazy.nvim

You can thoroughly go through awesome-neovim configuration and if more clarification is required read lazy's README

for help using the various plugins and extensions

:help local-addtions

To view the help pages and instruction manual on the various extensions

๐Ÿ‘ Credit

  • Huge credit to @folke, I learnt a lot from his lazy config repo
  • Big Shout Out to the creators of the various plugins which make nvim terrific
  • Another to all the creators of the various neovim extensions.

And Last but not the least God Bless The Vim && Neovim Community for this hyperextensible and hackable text editor