web-dev-qa-db-fra.com

Supports de fermeture automatique pour Vim

Existe-t-il un plugin WORKING pour Vim 7.4 qui fermerait automatiquement les crochets ('{}', '[]', '()') et peut-être insérer des retours chariot (pour '{}' au moins)?

Je sais que cette question a été posée plusieurs fois, mais aucune des réponses ne semble pas fonctionner dans vim 7.4 ou le plugin n'a pas été mis à jour ou quelque chose.

Jusqu'à présent, j'ai essayé vim-smartinput, autoclose et delimitmate et AUCUN de ceux-ci n'a réussi à insérer des caractères de fermeture même si j'ai activé les plugins et qu'ils semblent autrement être actifs. Je ne sais pas s'il y a eu des changements dans vim qui cassent en quelque sorte ces plugins. Aucun de ces plugins ne semble avoir été mis à jour dans au moins un an. Des solutions de travail qui fonctionneraient avec vim 7.4?

38
Dago

Je réponds à ma propre question parce que j'ai compris pourquoi aucun des plugins ne semblait fonctionner pour moi. Il semble que le problème soit lié à la fonctionnalité mksession dans vim, je n'essayais que ces plugins dans une session enregistrée et pour une raison qui semble empêcher les plugins de fonctionner pour une raison inconnue. Les plugins semblent être installés et "fonctionnent" très bien (comme dans les commandes du plugin, etc.). Sans ouvrir une session enregistrée, au moins delimitMate a commencé à travailler pour moi.

3
Dago

Pour ceux d'entre nous, qui veulent une Vanille vim:

inoremap " ""<left>
inoremap ' ''<left>
inoremap ( ()<left>
inoremap [ []<left>
inoremap { {}<left>
inoremap {<CR> {<CR>}<ESC>O
inoremap {;<CR> {<CR>};<ESC>O

Cette saisie semi-automatique en mode insert, à condition que set paste n'est pas défini. Gardez-le dans le vimrc pour éviter de le taper à chaque fois et quand nous ne voulons pas le mappage, nous devons l'échapper en utilisant ctrl + v avant de taper le caractère mappé comme ( { etc.

92
dlmeetei

Je viens de tester ClosePairs , AutoClose , DelimitMate et AutoClose dans Vim 7.4.131 sur Ubuntu, en utilisant Pathogen .

Sans surprise, tous fonctionnent.

Votre question devrait être reformulée car vous ne recherchez pas "un plugin à fermeture automatique qui fonctionne en 7.4"… parce que tous le font. Ce que vous devez demander est "Voici ma configuration, comment se fait-il qu'aucun plugin de" fermeture automatique "ne fonctionne pour moi?".

Une question à laquelle on pourrait répondre: "C'est un gâchis. Commencez par tout commenter avant la ligne 95."

De plus, Vim est un environnement très stable: "ne pas travailler activement" ne signifie pas "ne vaut pas la peine d'être essayé". Bien au contraire, en fait.

33
romainl

Donner un vote pour delimitMate avant que les mods en colère clôturent la question pour être basés sur l'opinion.

26
krystah

Ajout d'un nouveau candidat: il existe un plugin appelé lexima . Il a été introduit en octobre 2014, il est donc plutôt nouveau. Selon l'auteur, il présente une personnalisation et une répétabilité des points élevées. Il peut également être personnalisé pour fermer automatiquement les paires def - end comme dans Ruby.

Voici la présentation de l'auteur dans le VimConf tenu au Japon, qui compare différentes façons de réaliser des fonctionnalités de fermeture automatique.

13
Yosh

xptemplate est un plugin d'extraits de code qui inclut une option pour la saisie semi-automatique des crochets/accolades/etc. Installez-le et définissez

let g:xptemplate_brace_complete = '([{'

dans votre .vimrc. Ils commencent sur la même ligne mais si vous appuyez sur Entrée, ils les positionnent correctement.

2
Conner