Est-il possible davoir des noms de fonctions, des variables, etc. auto-complets vim lors de son utilisation pour programmer?

De nombreux IDE remplissent automatiquement les noms de fonctions, variables, noms de méthodes, etc. au fur et à mesure que lutilisateur tape. Les meilleurs complètent les noms basés à la fois sur la bibliothèque intégrée de la langue ainsi que sur ce qui a déjà été défini dans dautres fichiers du même programme.

Par exemple, en tapant ce qui suit Programme Python:

hungy = True def eatFood(food): pass if hungry: eatF 

la ligne eatF afficherait automatiquement eatFood() comme option de saisie semi-automatique disponible.

Est-ce que Vim a cette capacité? Si oui, comment puis-je lactiver?

Réponse

Il existe de nombreuses variantes de saisie semi-automatique dans vim. Une solution pourrait consister à utiliser SuperTab . Cela permet dutiliser la saisie semi-automatique plus ou moins à tout moment. Cela vous permettrait dappuyer sur Tab après avoir partiellement tapé le mot pour obtenir une liste de complétion. Par exemple, tapez eatF suivi de Tab pour passer à eatFood.

Remarque : ces images renvoient toutes à des exemples de gifs en action.

mg src = « https://i.stack.imgur.com/dVuOT.png » alt = « supertab completions » title = « Cliquez pour voir un gif »>

Vim a dexcellentes autres options. Vous devriez lire :h ins-completion pour voir la variété des options de complétion intégrées. Utilisation de CtrlX Ctrl O de vim, combiné avec un plugin compatible avec Python comme jedi peut donner une saveur de complétion. Jedi peut être configuré pour fournir une documentation sur lomni-complétion (cest ce que fait CtrlX Ctrl O ). Ensuite, la documentation des candidats à lachèvement apparaîtrait dans une fenêtre fractionnée.

mg src = « https://i.stack.imgur.com/etSIu.png » alt = « ctrlxctrlo completion » title = « Cliquez pour voir un gif »>

Utiliser des plugins similaires mais des options différentes conduit à toutes sortes de comportements. Il est possible, par exemple, de ne pas avoir besoin de demander la saisie semi-automatique (si cest ce que vous recherchez). Au lieu de cela, après avoir tapé un certain nombre de lettres (par exemple, 2 ou 3) dun mot, un plugin peut essayez de proposer intelligemment des complétions possibles dans un menu.

mg src = « https://i.stack.imgur.com/gtNK0.png » alt =  » entrez la description de limage ici « title = » Cliquez pour voir un gif « >

La réponse courte est donc oui! Mais le processus de configuration peut être un peu compliqué. Je le vois comme une étape dans le long escalier de la maîtrise de vim.

Commentaires

  • Jai ‘ les ai tous essayés et je reviens toujours à SuperTab, cest ‘ le moins intrusif.
  • Jaime aussi beaucoup le plugin YouCompleteMe, comme il le suggère au fur et à mesure que vous tapez et vous pouvez choisir ou ignorer les suggestions. Oui, visuellement, il est difficile dignorer, mais il est très peu intrusif dans mon flux de travail car il requi res moins de touches.
  • Jai ‘ jai changé les animations en  » lors dun clic « , dans le sens où elles sont liées aux animations gif.
  • Je ne peux ‘ pas utiliser YouCompleteMe sur mon ordinateur de travail car je ne ‘ avoir la racine pour installer les dépendances, SuperTab est de loin le meilleur choix suivant.
  • @mixedmath Dans mon cas, superTab ne ‘ t fonctionne.

Réponse

Une telle fonctionnalité – cest-à-dire la recherche du fichier actuel ( et tous les fichiers ouverts) pour la saisie semi-automatique, doit être activée par défaut avec Ctrl+P:

capture décran de la saisie semi-automatique en cours dutilisation

Vous pouvez accéder à la suggestion ext n avec Ctrl+N, la p suggestion révisée avec Ctrl+P et sélectionnez-le en tapant nimporte quelle lettre (qui sera ajoutée juste après la suggestion).

Commentaires

  • À léditeur (Jasper): je veux probablement réécrire quelque chose que jai écrit récemment, pas quelque chose que ‘ écrirai dans le futur ou qui est au début du déposer. Par conséquent, ^P est à mon humble avis plus naturel. Sinon merci pour la modification (jespère avoir cliqué sur le bouton droit et que vous avez obtenu votre +2).
  • Oui, jai ces points Internet imaginaires 🙂 Jai toujours pensé que la liste de suggestions serait triée par ordre alphabétique. ..
  • Lordre dapparition de @Jasper cest (du moins pour moi certainement, voir aussi ci-dessus: world,word,wood et non linverse).Donc ^P est la dernière complétion utilisée, ce qui est très pratique (je vais rarement plus loin que 3 éléments dans la liste, même dans un long fichier).
  • protip : inoremap <C-Space> <C-N>

Answer

Vim prend en charge la complétion de manière native . Vous pouvez en savoir plus sur les différentes complétions prises en charge par Vim à :h ins-completion.

En général, pour toutes les fins que jai trouvées, les ins-complétions suffisent à mon goût , cependant, il existe des plugins de complétion qui ajoutent plus de valeur au-delà de ce quoffre ins-completions. NeoComplete , YCM (YouCompleteMe) sont quelques-uns pour la même chose. Ils sont plus avancés dans le sens où ils essaient de combiner différents types de complétions avec plus de précision, et ils ont également des mécanismes de mise en cache avancés, de sorte quils ont tendance à être plus rapides. YCM va même jusquà travailler avec des compilateurs / utilitaires externes pour fournir un meilleur IntelliSense.

Réponse

Oui, scripts de saisie semi-automatique car vim existe. Le «meilleur» choix dépend de votre langage de programmation. Comme votre exemple de code est Python, je suggère de jeter un œil à Jedi . Construire en plus de cela You complete me existe, qui prend également en charge dautres langues, mais est parfois considéré comme trop volumineux. Pour les autres langues, vous pouvez parcourir la longue série de scripts vim .

Réponse

En mode insertion, tapez les premiers caractères dun mot, puis appuyez sur:

Ctrl-N to insert the next matching word; or Ctrl-P to insert the previous matching word. 

Ceci est particulièrement utile lors de la saisie du noms des variables dans un programme.

Loption « complete » contrôle où les mots-clés sont recherchés (y compris les fichiers, les fichiers de balises, les tampons, etc.).

Loption « completeopt » contrôle la façon dont la complétion se produit (par exemple, si un menu est affiché).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *