-
For syntax highlighting, you only need one plugin and that is the nvim-treesitter it has a growing list of languages with great looking syntax highlighting. But don't be fooled, treesitter can do much more than that but for this post I'll just mention it's syntax highlighting capabilities.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
But for autocompletion there is plenty to choose from but nvim-cmp has been the most popular one. This will have more code to write for the setup (not challenging per say) but just following the recommended setup would be all you need to get started.
-
I recommend looking at kickstart.nvim . It's a good starting place
-
For the alternatives, since nvim already comes with a built-in lsp client all you need is some configuration. This is provided by nvim-lspconfig. With a little bit of lua code for the setup you'll be all set to use the lsp client with the language server of your choice.
-
nvim-lint
An asynchronous linter plugin for Neovim complementary to the built-in Language Server Protocol support.
For linting, I would recommend nvim-lint. Again the same step as before, a little bit of setup code to register your linter and you're good to go!
-
For formatting, formatter.nvim is a good choice and has similar setup to nvim-lint.
-
null-ls.nvim
Discontinued Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.
However, if you want one tool to do both linting and formatting you can look to null-ls.nvim which is the most popular but is a language server itself that runs the linter/formatter as an lsp server.
-
Finally, you could go a little bit further and check out lsp-zero.nvim which does all the boilerplate setup for: nvim-lspconfig, null-ls and nvim-cmp, so you won't have to manually write setup code for each respective plugin and therefore just gets you up and running with your development instead of being stuck configuring nvim like I do almost everyday.
-
mason.nvim
Portable package manager for Neovim that runs everywhere Neovim runs. Easily install and manage LSP servers, DAP servers, linters, and formatters.
So you will need to install black on your system (there is another plugin that helps install such tools and language servers called mason.nvim, but that's a rabbit hole for another day haha).
-
python-lsp-server
Fork of the python-language-server project, maintained by the Spyder IDE team and the community
Another example, you can setup python-lsp-server with nvim-lspconfig (lsp server also needs to be installed globally or in virtualenv) and they have a plugin for black which you can then install in the same virtualenv and just use lsp to format the code instead of formatter.nvim.