Code Monkey home page Code Monkey logo

nvim2k's Introduction

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 video playlist that contains all the video 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

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

  • Some command line tools: fd, ripgrep

  • 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

nvim2k's People

Contributors

2kabhishek avatar

Stargazers

 avatar fwd_ed avatar Mohamed Zkrallah avatar Ashish Vaghela avatar Aaron avatar Jonathan MacCarthy avatar Rene Zbinden avatar Aryan Jassal avatar Aaron Lifton avatar Verónica Durán avatar Bhuvan Netam avatar  avatar Jason Huang avatar Mauricio Trajano avatar Fudzer M Huda avatar </cadnav> avatar tensor avatar Kiss avatar  avatar Marwan Osman avatar C$keY avatar  avatar Roman avatar  avatar Jon Duarte avatar Mohamed Oxmento avatar  avatar Zsolt Botykai avatar Michell Stuttgart avatar Oleg Levantin avatar Kenji avatar Neenad Ingole avatar Leonid Grishenkov avatar  avatar Konrad avatar Kevin Kelche avatar R w avatar vguen avatar Mark avatar Dan Delgado avatar Daniel Dorobantu avatar  avatar  avatar  avatar xue avatar  avatar Amar Gill avatar Trujun Zhang avatar Хамза Ахмад avatar Suraj avatar  avatar Fab avatar Shivam Rajput avatar ByoungHoon Kim avatar Matthieu PETIOT avatar  avatar Maksim Rozhkov avatar Matthew Farstad avatar Alexander Sauter avatar Stephan Randle avatar Luis Monsalve avatar Marek Markiewka avatar  avatar Igor Shegolev avatar  avatar J avatar Shawn Patrick Rice avatar Mehdi Baneshi avatar Nathan de Klerk avatar  avatar Denis Troepolskiy avatar Sam Granieri avatar  avatar kp avatar Allan Garcez avatar Michael LePera avatar  avatar Chaz avatar KenCanDoIT avatar Paul avatar Giuliano Dominici avatar  avatar JoshHartzell-Ascensus avatar Konstantin Ostrovskii avatar  avatar Marie N avatar Daniel Holström avatar Peter Fields avatar Adarsh Liju Abraham avatar astrolemonade avatar  avatar Madhur Ahuja avatar  avatar Dejan Kutle avatar Feni Brian avatar Vu Truong Giang avatar  avatar Andrew Shebanow avatar DBS avatar  avatar

Watchers

 avatar Madhur Ahuja avatar Medhat Assaad avatar Peter Fields avatar  avatar  avatar Collins avatar  avatar

nvim2k's Issues

Golang support

Description

Hello Abishek,

I hope this message finds you well. I've been thoroughly enjoying using your Neovim setup, which I find impeccably designed and highly efficient for my development workflow. The attention to detail and the quality of the configuration is admirable, and it has significantly improved my coding experience.

However, I've noticed that the current setup doesn't include support for the Go programming language. As a Go developer, integrating Go support would greatly enhance the utility and completeness of this Neovim configuration for myself and other Go developers.

I came across an implementation in another repository that seems to work well and could potentially serve as a good reference for integrating Go support into your setup. Here’s the link to the specific configuration: nvim-golang-setup. This example includes features such as autocompletion, diagnostics, and formatting, which I believe would complement your setup nicely.

Would it be possible to consider adding Go language support to the Neovim configuration? I believe that this addition would make the setup even more comprehensive and beneficial for a wider range of users.

Thank you very much for considering this request. I am looking forward to any possibility of this enhancement and am more than willing to assist in testing or providing further information if needed.

Warm regards,

Additional Information

No response

c programming mode?

Description

i like the idea of a config that allow to compile and open c programs with out leaving the editor , y looking for one since a time ago but nobody seems to care

Additional Information

No response

Add personalization features

Hello! Wanted to say I really love this setup. I have been messing with it making my own, but as I was making my own an idea crossed my head. What if you added configuration options to allow for a customized user setup to me merged with the core setup?

That way any user could clone this repo and still be able to get updates you make to the core repo, but their user folder will act as an override allowing them to override some default.

This is something along how other distros do it: I.e. lazy and Astro, and Chad

If this is no interest to you, I understand, just though I would float the idea! Would love to collaborate if possible

[BUG]: Issue with indent-blankline Plugin

Description of the bug

Error detected while processing BufReadPost Autocommands for "":
Error executing lua callback: /usr/share/nvim/runtime/filetype.lua:30: Error executing lua: /usr/share/nvim/runtime/filetype.lua:31: BufReadPost Autocommands for "
"..FileType Autocommands for "lua"..FileType Autocommands for "*": Vim(a
ppend):Error executing lua callback: ...l/share/nvim/lazy/indent-blankline.nvim/lua/ibl/init.lua:478: invalid key: virt_text_repeat_linebreak

image

Steps To Reproduce

  1. git clone nvim2k repo
  2. open nvim

Additional Information

Environment: Ubuntu 20.04 LTS via WSL on Windows 11 Pro

No response

[BUG]:

Description of the bug

Minor bug .. there was a change FROM 'help' TO 'vimdoc' in treesitter lua language

fix was: lua/nvim2k/treesitter.lua line 7
ensure_installed = { 'vimdoc', 'lua', 'markdown' },

in my install

Steps To Reproduce

Recent MacOS install.

Additional Information

No response

[BUG]: Run UpdateRemotePlugins during Wilder initialization

Description of the bug

The wilder.nvim plugin complains about missing functions

Steps To Reproduce

Initialize configuration with nvim --headless "+Lazy! sync" +qa

Additional Information

Initialize the Wilder plugin with something like:

build = function()
        vim.cmd([[silent UpdateRemotePlugins]])
end

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.