How to configure vim like an IDE

This page summarizes the projects mentioned and recommended in the original post on /r/vim

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • language-server-protocol

    Defines a common protocol for language servers.

  • 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.

  • coc-ccls

    CCLS (C/C++) extension for coc.nvim

  • 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?

  • 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.

    WorkOS logo
  • nerdtree

    A tree explorer plugin for vim.

  • https://github.com/preservim/nerdtree I believe this has git integration.

  • vim-signify

    :heavy_plus_sign: Show a diff using Vim its sign column.

  • Not the job of a language-server. Check out git/VCS plugins instead (eg. vim-signify)

  • LunarVim

    🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.

  • LunarVim They also provide a "from-scratch" option, to be easier to understand

  • zig.vim

    Vim configuration for Zig

  • 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.

  • Terminal

    Smally's very minimalistic dotfiles (by QSmally)

  • If you want some inspiration, this is my vimrc

  • 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.

    InfluxDB logo
  • vim-awesome

    Awesome Vim plugins from across the universe

  • 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).

  • vim-dispatch

    dispatch.vim: Asynchronous build and test dispatcher

  • 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.

  • ale

    Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support

  • At some of those syntax things neovim behaves better, and like. But there is https://github.com/dense-analysis/ale.

  • vim-dap

    Vim/Neovim debugger plugin providing a terminal interface to the Debug Adapter Protocol

  • Debugger adapter protocol is what lsp is for language support. https://github.com/dradtke/vim-dap

  • coc-clangd

    clangd extension for coc.nvim

  • C/C++/Objective-C

  • coc-java

    Java extension for coc.nvim

  • Java

  • coc-pylsp

    pylsp (python-lsp-server) extension for coc.nvim.

  • Python has several here, pylsp, pyright & a fork of vscode-python

  • SpaceVim

    Discontinued A community-driven modular vim/neovim distribution - The ultimate vimrc

  • SpaceVim

  • coc-pyright

    Pyright extension for coc.nvim

  • Python has several here, pylsp, pyright & a fork of vscode-python

  • coc-python

    Discontinued Python extension for coc.nvim, fork of vscode-python

  • Python has several here, pylsp, pyright & a fork of vscode-python

  • coc-rust-analyzer

    rust-analyzer extension for coc.nvim

  • Rust

  • veridian

    A SystemVerilog Language Server

  • SystemVerilog

  • rust_hdl

  • rust_hdl

  • ghdl-language-server

    Language server based on ghdl

  • ghdl-language-server

  • svls

    SystemVerilog language server

  • svls

  • YouCompleteMe

    A code-completion engine for Vim

  • 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?

  • lsp-zero.nvim

    A starting point to setup some lsp related features in neovim.

  • 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.

  • lazy.nvim

    💤 A modern plugin manager for Neovim

  • 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).

  • coc-snippets

    Snippets solution for coc.nvim

  • For coc, there's coc-snippets

  • vim-gitgutter

    A Vim plugin which shows git diff markers in the sign column and stages/previews/undoes hunks and partial hunks.

  • vim-gitgutter

  • vimspector

    vimspector - A multi-language debugging system for Vim

  • vimspector

  • nvim-dap

    Debug Adapter Protocol client implementation for Neovim

  • (neovim only) nvim-dap

  • nerdtree-git-plugin

    Discontinued A plugin of NERDTree showing git status

  • git-nerdtree

  • nvim-tree.lua

    A file explorer tree for neovim written in lua

  • (Neovim) nvim-tree

  • neo-tree.nvim

    Neovim plugin to manage the file system and other tree like structures.

  • (Neovim) neo-tree

  • spf13-vim

    The ultimate vim distribution

  • NvChad

    Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.

  • NvChad

  • Neovim-from-scratch

    📚 A Neovim config designed from scratch to be understandable

  • They also provide a "from-scratch" option, to be easier to understand

  • doom-nvim

    Discontinued A Neovim configuration for the advanced martian hacker

  • DoomNvim

  • config

    🔧 My local laptop configuration. (by 4lb0)

  • 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.

  • AstroNvim

    AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins

  • 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

  • kickstart.nvim

    A launch point for your personal nvim configuration

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts