Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
ale
Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support
-
vim-gitgutter
A Vim plugin which shows git diff markers in the sign column and stages/previews/undoes hunks and partial hunks.
-
NvChad
Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.
-
AstroNvim
AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
LSP stands for "Language Server Protocol", which defines how a language server and an editor (client) can communicate to provide code navigation, completion, etc. (source). Traditional IDE's would have something similar to this baked-in already, but proprietary to their software/language; whereas LSP is an open standard, so anything could implement it.
For vim specifically, I've been using coc.nvim, which works pretty well for my needs, and I know its quite popular. Another fairly popular one is YouCompleteMe, which I had taken a look at for some other languages; but ended up just using coc as I can't justify using YCM once a year (if that) -- too much "headache" for not a lot of use, you know?
https://github.com/preservim/nerdtree I believe this has git integration.
Not the job of a language-server. Check out git/VCS plugins instead (eg. vim-signify)
LunarVim They also provide a "from-scratch" option, to be easier to understand
I'm not a fan of debuggers and whatnot, so I don't have anything for that, but I use zig.vim for Zig/C/C++/Obj. C/anything else integration like highlighting. Additionally, vim-scripts/a.vim can be used for alternating between implementation/header files. I don't use it myself but vim-snippets can be used for common snippets.
If you want some inspiration, this is my vimrc
I don't have a solution for each one of your points, but I'm going to point out a couple that are very useful for me at least (most of these can be found on a site like vimawesome or just native configuration/usage).
Tis is good for the compilation to make it async( otherwise it blocks) https://github.com/tpope/vim-dispatch it wraps around the built in make/makeprg feature. Would recommend that you dont do it with large builds/outputs.
At some of those syntax things neovim behaves better, and like. But there is https://github.com/dense-analysis/ale.
Debugger adapter protocol is what lsp is for language support. https://github.com/dradtke/vim-dap
C/C++/Objective-C
Java
Python has several here, pylsp, pyright & a fork of vscode-python
SpaceVim
Python has several here, pylsp, pyright & a fork of vscode-python
Python has several here, pylsp, pyright & a fork of vscode-python
Rust
SystemVerilog
rust_hdl
ghdl-language-server
svls
For vim specifically, I've been using coc.nvim, which works pretty well for my needs, and I know its quite popular. Another fairly popular one is YouCompleteMe, which I had taken a look at for some other languages; but ended up just using coc as I can't justify using YCM once a year (if that) -- too much "headache" for not a lot of use, you know?
For neovim, you can still use the same extensions; however there's also a built-in LSP client. The downside of using the built-in is you'll need to have more extensions installed/configured to get all the features out of the box...BUT projects do exist to help simplify that, like lsp-zero.
At the moment, I'm working on migrating my config over the neovim with a few key changes -- lazy.nvim for lazyily-loaded plugins, lsp-zero instead of coc.nvim & a pure lua configration (exluding plugins).
For coc, there's coc-snippets
vim-gitgutter
vimspector
(neovim only) nvim-dap
git-nerdtree
(Neovim) nvim-tree
(Neovim) neo-tree
NvChad
They also provide a "from-scratch" option, to be easier to understand
DoomNvim
Except for the breakpoints and debugging most of the other things are configured in my config. You can start from there but beware you'll spend a lot of time configuring it.
You really want nvim. And if you don't already know, look at astronvim. It has all the IDE-like features, and whatever new plugins pop up for nvim, the community will try to include configs for them. The community packs of Astronvim are arguably its best features. https://github.com/AstroNvim/AstroNvim
Related posts
- how to change the background color of code blocks in markdown file?
- What's your solution to move between " "?
- Color scheme changes when rust_analyzer finishes
- Why keeps you using vim vs neovim?
- NeoVim Users: how do I have color highlighted matching do-end pairs. And how to automatically insert end after do?