web-dev-qa-db-fra.com

Comment faire pour que vscode arrête de remplacer les parenthèses fermantes lors de l'insertion

Lorsque j'essaie d'ajouter des parenthèses fermantes, cela remplace toujours les parenthèses suivantes à droite.

Voici une capture d'écran (il semble que j'appuie sur la touche droite du clavier, mais j'insère en fait une nouvelle parenthèse fermante):

enter image description here

Est-il possible de changer ce comportement?

28
kundasaba

Vscode a finalement résolu ce problème, et vous n'avez rien à faire pour obtenir le nouveau comportement. Désormais, il ne contiendra que les crochets qui ont été ajoutés automatiquement, donc tout fonctionne comme prévu. Si vous avez déjà désactivé l'option autoClosingBrackets dans les paramètres, il est recommandé de la réactiver maintenant.

1
kundasaba

Essayez réglage :

"editor.autoClosingBrackets": "never"

pour désactiver entièrement la fonction de fermeture automatique des supports.

11
Matt Bierner

Depuis la version 1.37 (qui est également appelée la mise à jour "juillet 2019", mais qui a été publiée en août 2019), VS Code ne se comporte plus comme le décrit la question.

Il "écrase" toujours les parenthèses fermantes, mais seulement là où il est beaucoup plus clair que c'est une parenthèse autoclose que vous voulez taper. En général, les parens "préexistants" ne seront plus annulés.

Il y a beaucoup de gens qui ont préféré l'ancien comportement (comme décrit dans cette question), donc il y a maintenant un demande d'ajouter un paramètre pour le récupérer .

Je laisse le matériel ci-dessous à des fins historiques.


Non, ce n'est pas (encore) possible, et c'est par conception. Lorsque vous tapez du code flambant neuf et que vous tapez un crochet ouvrant, vous obtenez automatiquement le crochet fermant (lorsque vous avez editor.autoClosingBrackets le, bien sûr). Ensuite, lorsque vous avez fini de taper ce que vous voulez à l'intérieur de ces crochets, comment allez-vous "quitter" et laisser le crochet de fermeture où il se trouve? La façon la plus naturelle est de taper un crochet de fermeture! Certains ne sont pas d'accord, mais de nombreuses dactylographes trouvent cela beaucoup plus facile que de déplacer leur main jusqu'aux touches fléchées ou à la souris pour passer devant.

Notez que ce comportement est largement inspiré et modélisé de ce que fait Sublime Text.

Il peut être utile de comprendre que la fonction de fermeture automatique des crochets n'est pas principalement destinée à enregistrer les frappes. Son objectif principal est plutôt d'améliorer la stabilité de la mise en évidence de la syntaxe (qui peut devenir chancelante lorsqu'il existe un support non fermé), et accessoirement pour vous empêcher de - oublier de taper le crochet de fermeture. S'il vous arrive de vous éloigner pour une autre raison sans le taper, alors félicitations, vous faites obtenez ce support gratuitement!

Les deux options les plus simples que vous avez si vous souhaitez ajouter un crochet (et laissez-moi noter que dans votre exemple, vous ajouteriez un non compatible crochet) sont soit (1) de placer le curseur après le groupe de parenthèses fermantes avant de taper une nouvelle parenthèse, ou (2) placez le curseur là où vous l'avez fait, mais continuez à taper les parenthèses fermantes jusqu'à ce qu'une nouvelle soit ajoutée. Dans les deux cas, les crochets nouveau ne seront ajoutés qu'à la fin du cluster.

Pour ce que ça vaut, il y a maintenant un issue pour cela sur le tracker, ainsi qu'un pull request pour créer un paramètre qui vous permet de désactiver le "bracket-swallowing" ". Si vous lisez ceci, si c'est quelque chose qui vous intéresse, vous devriez donner votre avis sur la demande de tirage.

Nouvelle mise à jour:

Il y a actuellement nouveau code en cours de test, ce qui rendra le typage des parenthèses plus sophistiqué . Le plan consiste pour l'éditeur à garder une trace des parenthèses qui ont été générées automatiquement et à ne taper que sur ces parenthèses. Une fois que le curseur quitte la zone entre crochets, l'éditeur cesse de garder une trace de ces crochets et ils deviennent des caractères "à part entière" qui ne peuvent plus être tapés. Espérons que cela conservera le sur-typage là où il est utile et s'en débarrassera là où il ne l'est pas. Notez que le plan actuel est que ce nouveau comportement devienne standard et pas un paramètre pour contrôler s'il est en vigueur.

6
John Y

La façon de travailler avec le paramètre d'origine VSCode consiste à ajouter de nouvelles parenthèses à la fin d'une liste de parenthèses.

...if (test === funFunction(data))| /* <- here */ {...

Vous devriez pouvoir taper une nouvelle parenthèse et elle ne remplacera pas l'ancienne. Cela ne résout pas votre problème, mais si vous vouliez suivre le paradigme que VSCode utilise, alors c'est parti.

(personnellement je le désactive comme le disent les autres commentaires)

0
Matt Wyndham