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

Ultra-Code Ultra-Code Last update: Mar 01, 2024

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

NOTE For the previous config setup with paq.nvim checkout paq-branch

✨ 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

Subscribe to our newsletter