1. 27
    1. 9

      Neovim can do quite a lot without plugins. For instance, LSP is completely usable without nvim-lspconfig (though it does require a bit of boilerplate). “Go to definition” is supported out of the box with 'tagfunc', which will use LSP to find an identifier’s definition if possible and fallback to tags otherwise (the use of 'tagfunc' means you get :tjump, :tselect, <C-]>, g], etc all “for free”). Completion with LSP works out of the box with 'omnifunc', and in the next Nvim release there will be an in-core implementation of LSP auto completion as well (opt in, but easily so).

      Nvim bundles a few tree-sitter parsers (C, Lua, Vimscript, and a couple others), but if you want more than that you will usually need a plugin like nvim-treesitter to manage the installation process. Hopefully this becomes simpler in the future with WASM parsers though. However, Nvim inherits a multitude of bundled (non tree-sitter) syntax highlighting from Vim, so you might not need tree-sitter.

      And of course all of the old tricks from Vim still work in Nvim: :find to find files, :grep to search, etc.

      1. 1

        Not only will :grep work just fine, but if ripgrep is detected on your system PATH, it’ll use that for :grep and :lgrep.

      2. 3

        Lately I’ve see noticed some very high quality developers use very simple editor configurations. No LSP, no plugins really, many don’t even use syntax highlighting.

        That has a quality to it of being very focused, almost meditative. You connect more with the tool or project you’re using and have to keep it in your head. I imagine it improves “knowledge locality” so you’re more likely to go into a zone of thought.

        I’m a Vim user but was never into those big Vim distributions and barely use any plugins nowadays. I’ve noticed when I use VS Code I don’t seem to get in “the zone”, it has so many colors and UI features I’m transported out of the code I’m working on. Going back to Vim/Neovim and a simple one at that helps me focus.

        1. 2

          I’m broadly in favour of this view. I’ve recently been thinking about how well lua/neovim works as a “hosted” development environment: contrasting it with eMacs/lisp, smalltalk, dune and things like that. I think there’s a way to go. I particularly miss a REPL.

          1. 2

            TIL about :help diagnostic-api - that’s really neat!

            For learning more about vim (and neovim’s) builtin capabilities, I can’t recommend Practical Vim enough.

            1. 3

              I bought the other one (Modern Vim) which is quite good, but Practical looks better. I’ve put off buying it due to its age, though, hoping/wondering if it would be revised.

            2. 2

              Emacs comes with lots more packages included, so not a perfect comparison, but thanks to all recent modernization it is also nice and doable to use it almost without any configuration. I have a tiny 30 LOC .emacs and it feels quite right.

              After many years using Unix-like systems, I gravitate towards simple configurations as fighting the defaults too much has always bitten me back.

              1. 2

                I don’t use any plugins for vim and haven’t for years. Just haven’t felt they were necessary The base of vim and neovim with some config tweaks is pretty damn good. Thought about setting up LSP, but I do pretty well without it.

                1. 1

                  I dunno, if you think users should have to learn Lua and the Neovim API, maybe that snippet in Exhibit B might make sense. But I think most people are here to get stuff done and would much prefer to bang in the one-liner given in the GitHub README, run the install command, then move on to what they were actually trying to achieve in the first place.

                  I mean, this is the airline replacement:

                  set statusline=%f%m%=%y\ 0x%B\ %l:%c\ %p%%

                  I’ve used Vim for years and I have absolutely no idea what any of that past set statusline means. I don’t want to read the documentation. I want a status bar!

                  1. 3

                    Seeing the statusline brought me back to those horrible days where I was trying to configure vim to have separate statuslines for different filetypes. It took me days.

                    1. 2

                      don’t want to read the documentation.

                      This is the core of the problem.

                    2. 1

                      This is how I feel about shell customization. Only moreso, if you’re the kind of person (like me) who spends much of their day hopping around to various systems where any fancy customization of your local machine doesn’t follow you around to the different hosts you SSH into.

                      That said, I did spend quite a few hours not long ago trying to turn neovim into something that could replace vscode (+vim plugin) for my very limited needs but wasn’t successful. I even tried to learn Lua but reached a point where the juice wasn’t worth how hard I was willing to squeeze. The biggest blockers were plugins that didn’t work well with each other without tweaking, having to learn LOTS of new key bindings beyond the normal vim keys, and an overall lack of tutorial-style documentation. Neovim has good reference docs, but I don’t have a photographic memory.

                      My guess is that people who are very successful with vim/neovim customization are those who take it up as a hobby in its own right.

                      1. 1

                        I like the diagnostics example! And neovim is so fun because I’m constantly learning new things and tricks.

                        Also, I recently wrote on this topic too. It’s still holding up pretty well for my uses. Had some issues with the built-in themes using neogit and diffs (which I’m clinging on to for now), so I’m trying out the mountaineer theme.