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 | PlugInstall
pour télécharger les plug-ins VIM
- redémarrez
vim
et appelez :CocInstall coc-marketplace
pour accéder facilement aux extensions COC
- appeler
:CocList marketplace
et rechercher des serveurs linguistiques, par exemple:
- tapez
python
pour trouver coc-jedi
,
- tapez
php
pour trouver coc-phpls
, etc.
- (facultatif) voir
install_gadget.py --help
pour 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 nvim
et 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.