TL; DR:
La manière moderne consiste à utiliser COC pour une complétion de type intellisense et un ou plusieurs serveurs de langues (LS) pour passer à la définition (et bien plus encore). Pour encore plus de fonctionnalités (mais ce n'est pas nécessaire pour passer à la définition), vous pouvez installer un ou plusieurs débogueurs et obtenir une expérience IDE complète. Démarrage rapide:
- installez vim-plug pour gérer vos plug-ins VIM
- ajoutez COC et (éventuellement) Vimspector en haut de ~/.vimrc:call plug#begin()
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'puremourning/vimspector'
call plug#end()
 
- appeler :source $MYVIMRC | PlugInstallpour télécharger les plug-ins VIM
- redémarrez vimet appelez:CocInstall coc-marketplacepour accéder facilement aux extensions COC
- appeler :CocList marketplaceet rechercher des serveurs linguistiques, par exemple:
- tapez pythonpour trouvercoc-jedi,
- tapez phppour trouvercoc-phpls, etc.
 
- (facultatif) voir install_gadget.py --helppour les débogueurs disponibles, par exemple:
- ./install_gadget.py --enable-python,
- ./install_gadget.py --force-enable-php, etc.
 
Réponse complète:
Le serveur de langues (LS) est une application autonome distincte (une pour chaque langage de programmation) qui s'exécute en arrière-plan et analyse l'ensemble de votre projet en temps réel, exposant des fonctionnalités supplémentaires à votre éditeur (n'importe quel éditeur, pas seulement vim). Vous obtenez des choses comme:
- achèvement de la balise sensible à l'espace de noms
- sauter à la définition
- passer à l'erreur suivante / précédente
- trouver toutes les références à un objet
- trouver toutes les implémentations d'interface
- renommer l'ensemble d'un projet
- documentation sur le vol stationnaire
- extraits, actions de code, mise en forme, peluches et plus encore ...
La communication avec les serveurs de langues s'effectue via le Language Server Protocol (LSP). Les deux nvimet vim8(ou plus) prennent en charge LSP via des plug-ins, le plus populaire étant Conquer of Completion (COC).
La liste des serveurs de langues développés activement et de leurs capacités est disponible sur le site Web de Lang Server . Tous ceux-ci ne sont pas fournis par les extensions COC. Si vous souhaitez utiliser l'un de ceux-ci, vous pouvez soit écrire une extension COC vous-même, soit installer LS manuellement et utiliser la combinaison des plug-ins VIM suivants comme alternative au COC:
La communication avec les débogueurs s'effectue via le protocole DAP ( Debug Adapter Protocol ). Le plug-in DAP le plus populaire pour VIM est Vimspector .
Le Language Server Protocol (LSP) a été créé par Microsoft pour Visual Studio Code et publié en tant que projet open source avec une licence MIT permissive (normalisée par la collaboration avec Red Hat et Codenvy). Plus tard, Microsoft a également publié le protocole DAP ( Debug Adapter Protocol ). Toute langue prise en charge par VSCode est prise en charge dans VIM.
Je recommande personnellement d'utiliser COC + les serveurs de langues fournis par les extensions COC + ALE pour les peluches supplémentaires (mais avec le support LSP désactivé pour éviter les conflits avec COC) + Vimspector + débogueurs fournis par Vimspector (appelés "gadgets") + les plug-ins VIM suivants:
call plug#begin()
Plug 'neoclide/coc.nvim'
Plug 'dense-analysis/ale'
Plug 'puremourning/vimspector'
Plug 'scrooloose/nerdtree'
Plug 'scrooloose/nerdcommenter'
Plug 'sheerun/vim-polyglot'
Plug 'yggdroot/indentline'
Plug 'tpope/vim-surround'
Plug 'kana/vim-textobj-user'
  \| Plug 'glts/vim-textobj-comment'
Plug 'janko/vim-test'
Plug 'vim-scripts/vcscommand.vim'
Plug 'mhinz/vim-signify'
call plug#end()
Vous pouvez google chacun pour voir ce qu'ils font.