| I kind of settled on vim as console editor in Linux but it will never replace good ide for me, and modern ides are getting/having vim mode for navigation, making then even more compelling. * Do you want autodetect indent and tab rule in file? Install plugin. * Do you want to automatically insert matching closing parenthesis - rebind keys (half baked solution) or plugin. * Vertical scrollbar? Plugin * Autocomplete code using lsp? Dance with plugins or copy paste literal screens of configs for nvim * Want nice looking theme? Plugin! (Gruvbox in my case) * Install and manage plugins? 3rd party Plugin for that too, with init code that will clone it itself from GitHub * Wrap long lines by whole words if possible? No default setting, I guess I need to search for plugin for that too. List goes on and on, and it is just I’m looking at my vimrc and recalling why I added or another thing. And there are many things which I decided to just to not care about, because it requires too much time to get it work Parent mentioned refactorings, but trust me, no matter what typing/navigating speed is, the standard refactorings in modern ides (that I bet cover most of typical refactoring work) will work faster and more correctly than manually doing the same. Even basic things like projectwise method rename or extracting something to parameter. Almost every quality of life improvement that is standard in modern ides require tinkering with vim. |
> Vertical scrollbar? Plugin
If you want scrollbars, the right solution is IMO to use a GUI Vim. I often use MacVim which is great, GVim is the obvious alternative on Linux/Windows, and NeoVim has lots of options (including, arguably, VSCode-NeoVim which is also great).
With MacVim, I can pop around randomly in a terminal and open Vim instances that run in the terminal as usual - and if I start editing something for long, I can type :gui to pop up an actual MacVim GUI window. I believe the same works in GVim.
> * Autocomplete code using lsp? Dance with plugins or copy paste literal screens of configs for nvim
I was annoyed by this as well. I then discovered that ALE (the venerable pre-LSP plugin for async linting) now has full LSP support, and it all “just works”. Doesn’t require NeoVim either. Just install the ALE plugin and put LSP servers in $PATH. ALE will find and use them. (By default, it uses standard Vim bindings like C-x C-o for completion, but you can change it.)
> * Want nice looking theme? Plugin! (Gruvbox in my case)
Vim 9.x (not NeoVim) has added a built-in Gruvbox theme named “retrobox” (both light and dark variants based on your background setting). If you don’t have it yet, you can get it as a plugin from here until your Vim updates: https://github.com/vim/colorschemes
> * Wrap long lines by whole words if possible? No default setting, I guess I need to search for plugin for that too.
There are built-in settings for this, but yeah it requires some initial fiddling to get it nice. (After that initial fiddling, I’ve been annoyed by how word wrap works in any other editor.)