Reference Searching
For reference searching I understand that the need is the same for both environments (macOS, Linux).
There are different solutions:
- Use a LSP server and an LSP bridge (e.g. coc.nvim)
- Use the Vim tag commands (e.g.:
:tselect
, :tag
) that make use of the ctag
command.
- Use a flavor of grep (e.g. the builtin
:vimgrep
or the bridge to the :grep
command or a Vim plugin like CtrlSF that provides additional supports to rename the references)
The first solution is clearly the more modern and the more accurate. On very large projects it can be relatively slow. I sometime still use the 'legacy' one.
Source Control Integration
You could use the command line operation within Vim with the :!{cmd}
that will let you do your source control operation within Vim.
For Git there are numerous plugins to help you in particular the vim-fugitive of Tim Pop.
For Subversion there is the svnj.vim plugin that is quite old (and with which I don't have experience) or his vc.vim successor.
Space tab control
For project specific ways to control indentation (tab vs. space) a common solution is to use the now builtin editorconfig-vim plugin.
With this plugin you can control the way Vim manage the indentation by having a .editorconfig
file at the root of your project where the way each language file should be indented.
e.g.: .editorconfig
[*.py]
indent_style = space
indent_size = 4
[*.cpp]
indent_style = tab
Remark: With Vim 9.1 you could just add the packadd! editorconfig
instruction in your vimrc
file to have the plugin activated.
:help filetype-plugin
. Read the documentation (and the referenced help pages) and edit your question when you run into problems.