Skip to content

A modern Neovim configuration with full support for Python, C++, Java, Web Dev and more...

License

Notifications You must be signed in to change notification settings

adityastomar67/nvdots

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

94 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

License People Stars Forks Watches Last Updated

Personalized Development Environment β€οΈπŸ‘¨β€πŸ’»

Brief description of how this configuration actually works. Hit the ⭐ button if you found this useful.

What is this

Handcrafted neovim configs for the ultimate CLI dev experience, completely in lua

For a best yet minimal config, go to minimal.nvim

Screenshots

Dashboard using alpha.nvim

Code Conceal

When code conceal is off

LimeLight for Better focusing

File Browsing with nvim-tree and Telescope file_browser extension

Git usng Lazygit right inside Neovim

Prerequisites

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

  • You have installed the latest version of neovim
  • If having issues, these Instructions will help you do that, Checkout complete automated installation script at bottom of the documentation.

Before we proceed, File Structure is like

If the reader is well versed or, has a general experience with shell scripting, Lua language or, know what they are doing then they may skip this section. But it advised to take a good understanding of the file structure before making any changes.

nvim
β”œβ”€β”€ after
β”‚Β Β  β”œβ”€β”€ indent
β”‚Β Β  β”œβ”€β”€ queries
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ cpp
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ lua
β”‚Β Β  β”‚Β Β  └── python
β”‚Β Β  └── syntax
β”œβ”€β”€ bin
β”‚Β Β  β”œβ”€β”€ img
β”‚Β Β  └── snippets
β”œβ”€β”€ init.lua
β”œβ”€β”€ lua
β”‚Β Β  β”œβ”€β”€ core
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ abbreviations.lua
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ cmds.lua
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ colorscheme.lua
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ comment.lua
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ consts.lua
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ dressing.lua
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ files.lua
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ keymaps.lua
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ options.lua
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ plugins.lua
β”‚Β Β  β”‚Β Β  └── utils.lua
β”‚Β Β  └── plugins
β”‚Β Β      β”œβ”€β”€ alpha.lua
β”‚Β Β      β”œβ”€β”€ cmp.lua
β”‚Β Β      β”œβ”€β”€ gitsigns.lua
β”‚Β Β      β”œβ”€β”€ lspInstaller.lua
β”‚Β Β      β”œβ”€β”€ lsp.lua
β”‚Β Β      β”œβ”€β”€ lsp-saga.lua
β”‚Β Β      β”œβ”€β”€ null-ls.lua
β”‚Β Β      β”œβ”€β”€ nvim-tree.lua
β”‚Β Β      β”œβ”€β”€ shared
β”‚Β Β      β”‚Β Β  └── ascii_art.lua
β”‚Β Β      β”œβ”€β”€ telescope.lua
β”‚Β Β      β”œβ”€β”€ todo.lua
β”‚Β Β      β”œβ”€β”€ toggler.lua
β”‚Β Β      β”œβ”€β”€ toggleterm.lua
β”‚Β Β      └── treesitter.lua
└── README.md

Install language servers

Mostly available via npm

npm install -g typescript typescript-language-server vscode-langservers-extracted vls @tailwindcss/language-server yaml-language-server @prisma/language-server emmet-ls neovim graphql-language-service-cli graphql-language-service-server @astrojs/language-server bash-language-server

TIP: No sudo on global npm install

Lua, Pyright, Deno, Gopls and rust-analyzer available in Arch/Manjaro repos

Check your package manager for availability if not on an Arch based distro - brew, apt etc.

sudo pacman -S lua-language-server pyright deno rust-analyzer gopls shellcheck

Install formatters

prettier with npm

npm i -g prettier

shfmt is in the AUR

sudo pacman -S shfmt                        # From the AUR
go install mvdan.cc/sh/v3/cmd/shfmt@latest  # With the help of GO

stylua is in the AUR

sudo pacman -S stylua

Check your package manager for availability if not on an Arch based distro - brew, apt etc.

autopep8 for python is in Manjaro/Arch repos

sudo pacman -S autopep8

Check your package manager for availability if not on an Arch based distro - brew, apt etc.

yamlfmt for yaml available with pip

sudo pip install yamlfmt

Installation

  # move to home dir
  cd ~
  # back up current config
  cp -r ~/.config/nvim ~/.config/nvim.backup
  # clone repository
  git clone https://github.com/adityastomar67/nvdots.git ~/.config
  # Launch nvim for the first time with this command to install plugins
  nvim +PackerInstall
  # exit nvim and Then compile the loader file
  nvim +PackerCompile

Additionals

Adding custom Snippets

The conifg uses luasnip paired with friendly-snippets, my own fork for VS Code style snippets. You can add your own snippets to the config snippets directory . You'll also need to edit the snippets/package.json to be able to load your snippets in the correct filetype. One test snippet is included as an example.

Plugins

For a list of plugins, see the plugins file.

More Info

Looking for my zsh and other cli configs? See Dotfiles

Resources and inspiration

Nvim Lua guide

Ben Frain has a nice setup

Lunar Vim for inspiration

Ui Customization docs

Lua for Programmers

LSP config

Awesome list of plugins

Plugin Finder Noting really, if you have (Neo)vim installed then you can just backup your previous config if any, then just clone this repo and create a symlink of this configuration to your ~/.config/nvim

SUGGESTION

For Complete Automated install

Run this code snippet in your terminal (Coming soon...)

curl -sL https://bit.ly/Fresh-Install | sh -s -- --vim

TODO

  • Better Documentation
  • New Screenshot
  • Get LuaSnip working with dynamic changes enabled
  • Change the keybinding of hopping from "f" to some other key
  • Add hydra plugin
  • Changing name to nvdots.
  • Add Mason.nvim
  • Create a version release
  • New Ideas for v2