Old Video Showcase
https://user-images.githubusercontent.com/4050749/169545588-198c7dab-11fa-4306-bcd0-9f1eea4b0556.mp4(nightly version)
docker run -it \
-v $(pwd):/mnt/workspace \
danielnehrig/nvim:nightly
This Config represents a full IDE experience
Focus on idiomatic opinionated mappings with simplicity
Synopsis
I've been using vim for about 10 years nowWhile I was aware that neovim was a thing I didn't really understand or tried to understand which problems it tries to solve which vim has one day I jumped about features for the 0.5.0 upcoming release which was about the native LSP in neovim while I was using YCM at that time for VIM (which I was pretty happy with) I thought lets give it a shot how it works for neovim this is when I realized that neovim had a LUA JIT implemented at that moment I was sold to it due to prior lua experience I investigated the lua plugin ecosystem while fairly small at that time it grew and grew and grew... It looked promising now we are here back at it again configuring the same editor with better features this time getting an IDE like experience getting rid of prior pain points with vim and getting rid of bad habits. The journey begins
Started 09.04.21
CONFIG SETUP:
- IDE capabilities (lsp, debug, project management, build, lint, test) ✅
- remove unused plugins ✅
- move to the build in LSP ✅
- add formatting and linting ✅
- Debug ✅
- intuitive mappings ✅
- fast tab/buffer navigation ✅
- project management ✅
- file management ✅
- lazy load plugins ✅
- Treesitter Setup ✅
- Refactoring ✅
Vim is a modal text editing solution so is neovim
it does not strive to be an IDE, but it offers IDE like capabilities
with it's exposed lua API and the Community revolving around it
creating a big up-and-coming plugin ecosystem
since vim/neovim are writtin in c it's a blazing fast editor
vs its competitors
while it has its plugin ecosystem and IDE like capabilities
it does not offer an out-of-the-box solution like VSCode
for that case boilerplate configurations like Lunarvim or Lvim are out there
even this config would be a great place to start to have IDE like capabilities
git clone https://github.com/danielnehrig/nvim ~/.config/nvim && cd ~/.config/nvim
./package.py
nvim +'autocmd User LazyInstall sleep 100ms | qa'
nvim +'autocmd User LazyDone TSInstall all' +'Lazy sync'
Most of the requirements can be installed over the ./package.py
script
It mostly installed LspServers,Linters,Formatters
you don't need to install them if you don't want them or already have everything you need
Requirements
Font:
Nerd Font any Monospaced One (if not monospaced the dashboard logo will not work) I use FiraCode Nerd Font Mono for regular and bold and VictorMono Nerd Font for italics
Package managers:
- python3.9 >
- pip
- node
- go
- rust/cargo
- luarocks
- brew (mac support)
- yay (arch aur support)
NVIM V ^0.9.*
LSPs in path:
- pyright
- efm (for lint and formatting mainly lua and JS, TS)
- typescript-language-server
- rust-analyzer
- gopls
- sumneko-lua
- jdtls
- etc... check lsp config for more info or the package install python script
We have a config layer copy and paste the default config layout from config.core.default_config
and create folder and file rootFolder/lua/config/custom/init.lua
paste in the default_configs values and adjust accordingly
if you have the lua language server properly setup you should be getting some heat auto completions for
all kinds of possible completions for the config or take a look at the config class
The Config should fully support:
Languages
- Typescript / Javascript
- CSS/SASS/SCSS
- Rust
- Java
- C, C++
- C# (omnisharp)
- Go
- Dockerfile
- Yaml
- Json
- Python
- Lua
- Toml
Maps
-
Space is the leader key (which key will help you navigate once you press space)
-
d - is for Debug
-
g - is for misc LSP actions
-
b - build (test, build, in buffer interpreter snip run)
-
q - quickfix
-
l - loclist
-
u - utility (disable diagnostic etc)
-
f - file related (telescope)
-
w - window
There are some remaps to default mappings for example if an LSP Server attaches
see mappings.lua
for more info
you are probably better of using these since they are community driven I'm the sole maintainer of this config
- Lvim
- nvchad and module suite
- Theme based solution
- If the theme modules wouldn't be strictly written for nvchad I would have used their module
- base16