nvim icon indicating copy to clipboard operation
nvim copied to clipboard

Neovim configuration

Neovim Configuration

FeaturesRequirementsFontInstallationFolder structureConfigurationPluginsWiki

🌟 Preview

startup
Find files with Telescope
p1
Show keybindings with which-key
p2
File browser with Telescope
p3
Neo-tree file browser
p4
Lazy.nvim
p5
Mason.nvim
p6
Autocompletion with nvim-cmp
p7

✨ Features

⚡️ Requirements

  • Neovim >= 0.8.0
  • Git >= 2.19.0
  • a Nerd Font (optional)

🔠 Used Font

  • Caskaydia Cove Nerd Font - A new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Terminal.

🛠️ Installation

Linux / macOS

Make a backup of your current nvim and shared folder

mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak

Go to your .config folder

cd ~/.config

Clone the Repository

git clone https://github.com/ilias777/nvim.git

Remove .git folder and add your own repo if you want

rm -rf ~/.config/nvim/.git

Navigate to nvim folder and open init.lua with Neovim

cd nvim
nvim init.lua

📁 Folder and File Structure

~/.config/nvim
│
├── lua                         # LUA FOLDER
│   ├── core
│   │   ├── autocommands.lua    # File to store all the autocommands
│   │   ├── usercommands.lua    # File to store all the usercommands
│   │   ├── keymaps.lua         # Keybindings
│   │   └── options.lua         # All Neovim options
│   └── plugins
│       ├── init.lua            # Many plugins in one file
│       ├── plugin_1.lua        # One or more plugins in one file
│       ├── plugin_2.lua        # One or more plugins in one file
│       ├── **
│       └── plugin_xx.lua
├── snippets
│   ├── javaspript.lua          # JavaScript snippets
│   └── lua.lua                 # Lua snippets
├── ftplugin
│   └── java.lua                # Java configuration
│── init.lua                    # Main file
└── cheatsheet.txt              # File for cheatsheet.nvim

⚙ Configuration

How to configure Neovim is explained in the Wiki

🔌 Plugins

  • Over 90 Plugins preinstalled
  • Startuptime ~40ms - ~59ms
startuptime

Plugins List

Package Manager

File Explorer

  • neo-tree - Manage and browse the file system.

Plugins for LSP

  • nvim-lspconfig - Configurations for the LSP client.
  • mason - Install and manage LSP servers.
  • mason-lspconfig - Bridge between mason and lsp-ocnfig.
  • trouble.nvim - A pretty diagnostics, references, telescope results, quickfix and location list.
  • glance.nvim - A pretty window for previewing, navigating and editing your LSP locations.
  • inc-rename.nvim - Incremental LSP rename command.
  • outline.nvim - Code outline sidebar powered by LSP.
  • nvim-jdtls - Extensions for the built-in LSP support for eclipse.jdt.ls.

Autocompletion

Formatter

  • conform.nvim - Lightweight yet powerful formatter plugin for Neovim.

Linter

  • nvim-lint - An asynchronous linter plugin for Neovim.

Colorscheme

Snippet Engine

Tabline and Statusline

Motion

Git integration

  • advanced-git-search - Search your git history by commit message, content and author with Telescope.
  • diffview.nvim - Interface for easily cycling through diffs.
  • gitsigns - Git integration: signs, hunk actions, blame, etc.
  • neogit - A Magit clone for Neovim

Utils

Treesitter

Telescope

Comments

Degub Adapter Protocol

Writing

  • vimtex - A modern Vim and Neovim filetype and syntax plugin for LaTeX files.
  • markdown-preview - Preview markdown on your browser.

Preinstalled Language Servers

Language Server Description Programming Language
cssls Language services for CSS, LESS and SCSS CSS
emmet_ls Emmet support based on LSP HMLT - CSS
html Language services for HTML HTML
jsonls JSON language service JSON
jdtls Java language server Java
tsserver TypeScript & JavaScript Language Server JavaScript
ltex Grammar checking of various markup languages LaTex, Markdown
texlab Language Server Protocol for LaTeX LaTex
lua_ls A language server that offers Lua language support Lua
intelephense PHP language server PHP
pyright Static Type Checker for Python Python
rust_analyzer Rust compiler Rust
volar High-performance Vue language tooling based-on Volar.js Vue
yamlls Language Server for YAML Files YAML