Skip to content

S4NKALP/nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nvim

License People Stars Forks Watches Last Updated

Your Personalized Development Environment ❤️👨‍💻

nvim Demo
nvim screenshot

Handcrafted Neovim setup for the ultimate CLI dev experience.

✨ Features

  • Fully configured LSP: Out of the box LSP and completions, including Copilot (optional)
  • Awesome keybindings: Intuitive and well documented keybindings with which-key
  • Blazingly fast: Starts up in less than 30ms thanks to extensive lazy loading
  • Batteries included: Has all the necessary plugins included out of the box
  • Git in there: Powerful git integrations thanks to lazygit, fugitive, gitsigns and more
  • Pretty colors: Comes with treesitter and dracula preconfigured with full transparency support
  • Goto for notes: Comes with powerful note-taking capabilities, thanks to tdo
  • Tmux integration: Works with your tmux configurations out of the box
  • Dev tools: Comes with debugging, testing, database and REPL support, pick and choose
  • Auto install: All necessary LSPs, Null LS sources, Treesitter Parsers etc. are auto installed
  • User module: Configure nvim according to your needs by using the user module!
  • and some more

Most importantly:

Built for extending: nvim has a easy to understand config structure that promotes personalization, so go ahead, bring your keybindings, functions and plugins over, and truly make nvim: Your Personalized Development Environment!

⚡ Setup

⚙️ Requirements

Before you begin, ensure you have met the following requirements:

  • You have installed the latest version of neovim

  • Python provider is necessary for some operations: pip install neovim

  • Some command line tools: fd, ripgrep

  • To use nvim for notes, take a look at tdo.nvim

💻 Installation

To install nvim clone the repo and setup the symlink

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

On Linux and Mac

ln -sfnv $PWD/nvim $HOME/.config/nvim

On Windows Powershell

New-Item -ItemType SymbolicLink -Path "$env:LOCALAPPDATA\nvim" -Target "$PWD\nvim" -Force

🚀 Usage

Edit files in lua/core for tweaking options, and to add/remove functions and autocmds

📦 Plugins

To add new plugins add it to the plugins list

For plugin configs you can place them in these folders based on the functionality:

  • lang: Plugins related to language features, completions, lsp, debugging etc.
  • tools: General purpose tool plugins that aid in the editing experience.
  • ui: Cosmetic plugins that make neovim pretty.

⌨️ Keybindings

If you want to change functionality of a core keybinding, edit core/keys

To add new keybindings visit the which-key config

🎨 User Configs

nvim supports a user module where you can store your custom configs, these will always override the default configs, whenever there is a clash.

To use custom configs create the file lua/user/init.lua, you can structure your configs as you like there.

lua/user/init.lua must be present to load custom configs, require any custom modules in this file.

user module is not part of the repo, you can set up user module as a separate git repository while continuously receiving nvim2k updates.

🤖 Auto Install

By default nvim will auto install a set of LSP servers and null-ls sources using mason, if you want to disable it make sure to add the following to your user module.

-- lua/user/init.lua
local user = {
    auto_install = true,
}

return user

To setup and access other user options you can use the get_user_config(key, default) method in lib.util

Example: local auto_install = require('lib.util').get_user_value('auto_install', true)

🧑‍💻 Behind The Code

🌈 Inspiration

I have been using vim/neovim for years now, I wanted to share my config for everyone to use

💡 Challenges/Learnings

  • Finding out the right plugins and configs!
  • Setting up the initial config structure with lazy loading was tough.

🧰 Tools Used

  • dots — Desktop Environment
  • nvim — Personalized Editor

⭐ hit the star button if you found this useful ⭐