/nvim2k

Your Personalized Dev Env ❤️👨‍💻

Primary LanguageLuaGNU General Public License v3.0GPL-3.0

License People Stars Forks Watches Last Updated

Your Personalized Dev Env ❤️👨‍💻

nvim2k Demo
nvim2k screenshot

Handcrafted Neovim setup for the ultimate CLI dev experience.

Here's a YouTube playlist that contains all the videos I made related to nvim2k.

✨ 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 onedark 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 nvim2k according to your needs by using the user module!
  • and some more

Most importantly:

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

⚡ Setup

⚙️ Requirements

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

  • You have installed the latest version of neovim

  • Some command line tools: fd, ripgrep

  • The Python provider is necessary for wilder.nvim.

    • Install it using pip install neovim, and then run :UpdateRemotePlugins in Neovim.
  • To use nvim2k for notes, take a look at tdo.nvim

💻 Installation

To install nvim2k clone the repo and setup the symlink

git clone https://github.com/2kabhishek/nvim2k

On Linux and Mac

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

On Windows Powershell

New-Item -ItemType SymbolicLink -Path "$env:LOCALAPPDATA\nvim" -Target "$PWD\nvim2k" -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

Find the keybinding manual here.

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

To add new keybindings edit the which-key config

🎨 User Configs

nvim2k 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 nvim2k 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 7+ 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

  • dots2k — Dev Environment
  • nvim2k — Personalized Editor
  • sway2k — Desktop Environment
  • qute2k — Personalized Browser

🔍 More Info


⭐ hit the star button if you found this useful ⭐

Source | Blog | Twitter | LinkedIn | More Links | Other Projects