VIM Productivity Toolbox
Ctags
Ctags is a multi-language tags generator for code comprehension, it can be installed on an MSYS2/MINGW64 subsystem with the following command:
$ pacman -S ctags
From a project root directory, type:
$ ctags --recurse=yes --exclude=.git
and it will generate an index file called tags in the same directory.
CtrlP
CtrlP is a fuzzy finder for VIM. Open VIM in a directory that contains a tags file and then you can type the following command:
:CtrlPTag
As you can see below, it will split the buffer into two parts. The bottom part has a prompt (>>>) where you can filter out tags based on your search term.
Rg (Ripgrep)
Rg is a noticeable faster version of grep, it can be installed from the Windows pre-compiled binaries (pc-windows-gnu). Extract the rg.exe file from the archive and save it in a directory included in your PATH.
You can use rg from the command line in the same way you use grep or inside VIM as described in the next session.
Grepper
Grepper is another useful vim-plugin that lets you find a specific pattern inside your files/folders recursively. The default tool used by Grepper can be set to ripgrep, then you can just type:
:Grepper
followed by your query.
Grepper ignores the files listed in the root directory .gitignore, if this file exists. I normally ignore the tags file to exclude its content.
Language Server
A language server is needed to add advanced code completion features to VIM. Let's suppose Python is your choice, you can install your language server as follows:
pip install jedi-language-server
then select one of the possible integration plugins as described in this README
Final Remarks
Unfortunately neither FZF nor SKIM works well in this environment. The former redirects the output to the standard error while skim cannot be even compiled on Windows since one dependency (tuikit) does necessarily require a Linux terminal to function.