Funny thing is that LSP was actually created for VSCode. That’s the now standard protocol to decouple language specific things (completion, formatting, linting…) from the editor so you don’t have to use an editor for each language. You can now use any editor that supports LSP, either directly or through a plugin, and turn it into a fully fledged IDE by installing the LSP servers for the language you need. I guess some VSCode plugins use LSP under the hood and just embed the server.
Bash LSP server can use shellcheck and shfmt but you have to install those manually.