web-dev-qa-db-fra.com

Comment puis-je configurer webstorm pour ajouter automatiquement des points-virgules aux fonctions, méthodes, etc. javascript

Lorsque j'écris en Javascript, j'utilise des points-virgules. Cependant, lorsque j'écris dans webstorm/phpstorm, il complète automatiquement les accolades et les crochets, mais ne crée pas automatiquement de point-virgule. Oui, je sais que ce n'est pas obligatoire, bla, bla, mais c'est ainsi que je code - et je ne suis pas seul, beaucoup de gens codent de cette façon ...

Exemple:

var data = $.ajax({});

Normalement, webstorm/phpstorm le fera et laissera le curseur entre les accolades:

var data = $.ajax({})

Tout ce que je veux dans le monde n’est pas obligé d’ajouter le point-virgule manuellement et de le compléter automatiquement, comme je l’ai indiqué dans mon premier exemple.

Des idées?

50
tvpmb

Il n'y a aucun moyen de l'insérer automatiquement, vous devez utiliser l'action Déclaration complète (Ctrl+Shift+Enter).

Vous devez également vérifier que l’utilisation du point-virgule pour terminer les instructions = l’option est activée dans Settings | Code Style | JavaScript | Other onglet.

76
CrazyCoder

Vous pouvez créer une macro et un raccourci clavier:

Record Auto semicolon macro and bind shortcut to it:
1. Edit -> Macros -> Start Macro Recording
2. In the editor go to the end of line by pressing End
3. put semicolon ';'
4. Edit -> Macros -> Stop Macro Recording
5. Give a name, for example 'Auto semicolon'
6. Open settings (Ctrl + Alt + s), select Keymap
7. Expand Macros node
8. Select 'Auto semicolon', in the context menu choose Add Keyboard Shortcut
9. Set Ctrl + ; as First keystroke
10. Save/Apply settings
11. Enjoy!
12. Try it so, in the middle of code line, hit Ctrl + ;

// some useful combinations:
Ctrl + ,    put colon at the end of line
Ctrl + ;    put semicolon at the end of line
Ctrl + .    put => at the end of line

De https://Gist.github.com/umidjons/9383758

Ce serait beaucoup plus cool s'il y avait une option pour le faire automatiquement si ...

9
ricka

Ce que je veux faire

Mon but était d’ajouter un point-virgule à la fin de ma ligne courante tout en maintenant la position de mon curseur au milieu de la ligne.

par exemple.

func([{''}])
//     /\
//     ||
//     ||
//     current cursor position
//
// Now I want to add a semi-colon to the end-of-the-line
// but then continue typing my string contents at the same
// cursor location. i.e. I now want this, with as few
// keystrokes as possible:
//
//          Add this semi-colon...
//          |
//          |
//          V
func([{''}]);
//     /\
//     ||
//     ||
//     ...while maintaining this cursor position

Pourquoi je veux le faire

WebStorm "termine" joliment la ponctuation au fur et à mesure que je tape, c'est-à-dire qu'après avoir tapé le ({[', il se complète automatiquement à ({[' <<cursor here>> ']}). Je veux m'assurer d'inclure le point-virgule à la fin de la ligne maintenant avant de taper davantage, parce que je pourrais oublier plus tard. Après avoir ajouté le point-virgule, cependant, je souhaite continuer à taper à l'emplacement actuel du curseur. Je sais que je peux utiliser l'auto-complétion pour ajouter un point-virgule à la fin de la ligne, mais cela laisse le curseur à la fin de la ligne, ce qui m'oblige à appuyer plusieurs fois sur la flèche arrière. De plus, parfois, ma ligne à moitié terminée ne correspond pas encore à la syntaxe JavaScript correcte, de sorte que l'auto-complétion peut même ne pas fonctionner.

Pourquoi c'était difficile

La solution semblait simple: écrivez une macro simple pour aller au bout de la ligne, tapez un point-virgule et revenez à mon emplacement d'origine. Le problème, c'est qu'il est difficile de trouver comment convaincre WebStorm de revenir à mon emplacement d'origine! J'ai essayé de définir un signet, d'aller au bout de la ligne, de taper un point-virgule et de revenir à mon signet, mais cela ne fonctionne pas car, pour autant que je sache, les signets ne mémorisent que la ligne, pas la colonne. J'ai d'abord essayé de taper le texte du marqueur d'ordures à mon emplacement actuel (par exemple, xcursorx), d'aller au fin de la ligne, de taper un point-virgule et de faire une simple find de mon texte de marqueur d'ordures, mais cela ne fonctionne pas, car les macros de WebStorm ne fonctionnent pas. t semble bien jouer avec la saisie de texte dans la routine find. J'ai d'abord essayé de taper le texte du marqueur de déchets, d'aller au bout de la ligne, de taper un point-virgule, d'utiliser Navigate/Last Edit Location et de supprimer les déchets, mais cela ne fonctionne pas non plus.

Ce qui a finalement fonctionné

J'ai créé une macro comme suit (les raccourcis clavier indiqués dans les différentes étapes sont ceux de la keymap "Mac OS X 10.5+" ... utilisez les raccourcis ou les options de menu appropriés pour votre configuration):

  • en commençant par le curseur/curseur à l’emplacement souhaité, lancez l’enregistrement d’une macro (par exemple, Edit > Macros > Start Macro Recording)
  • tapez un seul caractère non-espace/non-Word, par ex. une période
  • immédiatement après, tapez un seul "Word" de texte de repère que vous n’utiliserez nulle part ailleurs, par exemple. "xcursorx"
  • immédiatement après, tapez un autre caractère unique non-espace/non-Word, par ex. une autre période (c’est-à-dire que vous avez maintenant saisi ".xcursorx.")
  • saute à la fin de la ligne (par exemple, flèche vers la droite de la commande) 
  • tapez un point-virgule
  • immédiatement après le point-virgule (c’est-à-dire qu’aucun espace), saisissez à nouveau le même "Word" de texte avec le marqueur de mémoire, mais sans les caractères flanquants non-espace/non-Word, par ex. tapez "; xcursorx"
  • recule le curseur d'un "mot" (par exemple, option-flèche vers la gauche)
  • trouver le mot au niveau du curseur (c'est-à-dire Edit > Find > Find Word at Caret) (do not utiliser la variable normale find en saisissant manuellement "xcursorx")
  • supprimer le texte sélectionné (c’est-à-dire appuyer sur la touche Suppr ou la touche Retour arrière pour supprimer le deuxième "xcursorx" à la fin de la ligne)
  • rechercher l'occurrence précédente du dernier texte sélectionné (à savoir Edit > Find > Find Previous/Move to Previous Occurrence ou shift-command-G); cela sélectionnera le "xcursorx" dans le ".xcursorx".
  • supprimer le texte sélectionné (c.-à-d. appuyer sur la touche Suppr ou la touche de retour arrière)
  • avancer d'un caractère (c.-à-d. flèche vers la droite jusqu'à après la deuxième période)
  • supprimer deux caractères (c.-à-d. appuyer deux fois sur la touche Suppr ou sur le retour arrière pour supprimer les deux points)
  • arrêter l'enregistrement de la macro (c.-à-d. Edit > Macros > Stop Macro Recording)
  • attribuez un nom à votre macro (par exemple, "lieu-point-virgule-à-la-fin de ligne")
  • attribuez à votre macro un raccourci clavier (par exemple, Preferences > (scroll down to) Macros > place-semicolon-at-end-of-line > (right click) > Add Keyboard Shortcut ... et entrez le raccourci souhaité, par exemple, un point-virgule)

Explication de certaines étapes obscures

Toutes les étapes ci-dessus ne sont pas nécessaires pour certains cas d'utilisation. par exemple. L'ajout des périodes supplémentaires n'est pas nécessaire pour que cela fonctionne dans l'exemple du haut à l'aide de func([{''}]). Toutefois, les étapes supplémentaires sont requises pour certains cas Edge, par exemple. si votre curseur est déjà à la toute fin de la ligne.

Comment l'utiliser

Pour utiliser la macro, commencez avec votre frappe habituelle (dans l'exemple ci-dessus, tapez func([{' et func([{''}]) apparaîtra), tapez votre raccourci (par exemple, option-point-virgule) et le point-virgule apparaîtra à la fin de la ligne mais votre curseur restera où il était.

Caveat

Cette solution est un peu un bidouillage, car l'affichage saute un peu lorsque le texte de la poubelle est inséré, puis supprimé. Cependant, au moins ça marche. Ce serait formidable si quelqu'un pouvait trouver le moyen d'atteindre le même objectif final sans exiger le texte d'un marqueur de déchets.

6
Andrew Willems

Vous pouvez utiliser ce https://github.com/yyx990803/semi . Fournir des cli et des API pour répondre à vos besoins.

1
Geng Jiawen

Pour IntelliJ Idea 2018, suivez les étapes ci-dessous:

  • Paramètres ouverts: Ctrl+Alt+S
  • Éditeur> Style de code> JavaScript
  • Sélectionnez l'onglet> Ponctuation
  • Dans la liste déroulante, sélectionnez "Utiliser/Utiliser toujours" point-virgule pour terminer les instructions
  • Appliquer et OK

Cela ajoutera un point-virgule supplémentaire dans JS.

1
Kapil Lohakare

Vous pouvez utiliser eslint :

définir la règle "semi" sur "error" ou 2

dans le fichier que vous souhaitez ajouter un point-virgule, cliquez avec le bouton droit de la souris, puis sélectionnez Fix ESLint Problems au bas du menu.

 right click menu

1
dubaniewicz

Webstorm/phpstorm le fera normalement et laissera le curseur entre les accolades:

Nécessite toujours une action manuelle, mais je viens de frapper End et ; à chaque fois. Mais Ctrl+Right devrait fonctionner aussi, ces clés sont à portée de main.

Je frappe continuellement CTRL+S après chaque ligne pour enregistrer un document, ce ne serait donc qu’un inconvénient mineur pour moi.

0
Barry Staes

Avoir à appuyer sur Ctrl + Maj + Entrée puis à revenir entre parenthèses à chaque fois n'est pas une solution dans mon esprit.

Voici une vraie solution:

Vous voulez généralement un point-virgule à la fin d'une déclaration, lorsque vous appuyez sur 'Shift + 9', n'est-ce pas? Sans frapper une autre combinaison folle sur le clavier à chaque fois.

  1. Tapez une fonction dans l'éditeur.
  2. Juste avant de taper '(', allez dans Edition> Macros> Démarrer l'enregistrement de macros;
  3. Tapez '();' et appuyez 2 fois sur la touche 'Gauche' pour revenir à l'intérieur.
  4. Allez dans Édition> Macros> Démarrer l'enregistrement de macros et nommez-le (par exemple, auto-point-virgule; 5). Allez dans Préférences> Apparence & comportement> Keymap> Macros et cliquez avec le bouton droit de la souris sur 'auto-point-virgule', sélectionnez Ajouter un raccourci clavier et appuyez sur +9 ';
  5. Quittez Préférences et dans l'éditeur, testez-le!

Vous pouvez en fabriquer de nombreuses variétés en fonction de vos besoins. Par exemple, en ajoutant les accolades entre '({})' ou si vous utilisez '()' plus souvent sans qu'un point-virgule ne soit nécessaire, vous pouvez changer le raccourci en 'Ctrl + Maj + 9', et Le combo ajoute juste le régulier. Votre préférence!

0
Kesarion

Oui, si vous le laissez sans point-virgule, Webstorm le marquera comme unterminated statement et le mettra en surbrillance. Lorsque vous êtes sur la ligne (avec le curseur) comme accolade fermante, tapez simplement:

Alt + Enter

Ce qui fera apparaître le menu des ampoules (les corrections automatiques ou des modifications, je n’ai pas un meilleur nom pour cela).

Espérons que si votre code est correct ou si l’accolade est le seul symbole de cette ligne, la seule option que vous aurez est Terminate statement et elle sera automatiquement ciblée; appuyez donc sur la touche Entrée pour que Webstorm ajoute le point-virgule.

De cette façon, vous évitez de positionner manuellement le curseur et de taper le point-virgule vous-même, mais restez simplement sur cette ligne, et faites alt + enter + enter et vous l'avez.

Oui, ce n'est pas automatiquement là, mais c'est plus rapide et facile.

0
Gilad Peleg

Créez une macro pour aller à la fin de la ligne et insérez le point-virgule. Attribuez ensuite la macro à la frappe de point-virgule. Ainsi, à tout moment de votre saisie, vous pouvez terminer la ligne de code. 

0
Developer