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.
-
nvim-lint
An asynchronous linter plugin for Neovim complementary to the built-in Language Server Protocol support.
-
null-ls.nvim
Discontinued Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.
-
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.
-
mason.nvim
Portable package manager for Neovim that runs everywhere Neovim runs. Easily install and manage LSP servers, DAP servers, linters, and formatters.
-
python-lsp-server
Fork of the python-language-server project, maintained by the Spyder IDE team and the community
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.
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.
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.
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.
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).
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.