Comment puis-je configurer webstorm pour ajouter automatiquement des points-virgules aux fonctions, méthodes, etc javascript
Quand j'écris Javascript, j'utilise des points-virgules. Cependant, lorsque j'écris dans webstorm / phpstorm, il complète automatiquement les accolades et les parenthèses, mais n'ajoute pas automatiquement de point-virgule. Oui, je sais que ce n'est pas nécessaire selon les normes, bla bla, mais c'est la façon dont 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 à l'intérieur des accolades:
var data = $.ajax({})
Tout dans le monde que je veux est de ne pas je dois ajouter le point-virgule manuellement et le compléter automatiquement comme je l'ai noté dans mon premier exemple.
Des idées?
9 réponses
Il n'y a aucun moyen de l'insérer automatiquement, vous devez utiliser le Énoncé Complet action (Ctrl+Maj+Saisissez).
Vous devez également vérifier que l'optionUtiliser un point-virgule pour terminer les instructions est activée dans Settings
| Code Style
| JavaScript
| Other
tab.
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
À Partir de https://gist.github.com/umidjons/9383758
Serait beaucoup plus cool s'il y avait une option pour le faire automatiquement...
Ce Que Je Veux Faire
Mon but était d'ajouter un point-virgule à la fin de ma ligne courante tout en maintenant la position du 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 "complète" bien la ponctuation au fur et à mesure que je tape, c'est-à-dire après avoir tapé le ({['
, Il se termine automatiquement à ({[' <<cursor here>> ']})
. Je veux m'assurer que j'inclue le point-virgule à la fin de la ligne maintenant avant de taper plus, car Je pourrais oublier plus tard. Après avoir ajouté le point-virgule, cependant, je veux 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 me forçant à frapper la flèche arrière plusieurs fois. De plus, parfois ma ligne à moitié terminée ne sera pas encore correcte syntaxe JavaScript, donc l'auto-complétion pourrait même ne pas fonctionner.
Pourquoi C'Était Dur
La solution semblait facile: écrire une macro simple de sauter à la fin de la ligne, tapez un point-virgule, et revenir à mon emplacement d'origine. Le problème est, il est difficile de comprendre comment l'amadouer WebStorm pour revenir à mon emplacement d'origine! J'ai essayé de définir un signet, d'aller à la fin de la ligne, de taper un point-virgule et de revenir à mon signet, mais cela ne fonctionne pas parce que, pour autant que je sache, les signets ne se souviennent que de la ligne, pas de la colonne. J'ai d'abord essayé de taper du texte de marqueur de déchets à mon emplacement actuel (par exemple xcursorx
), en allant à la ligne fin, en tapant un point-virgule, et en faisant un simple find
de mon texte de marqueur de déchets, mais cela ne fonctionne pas non plus parce que les macros de WebStorm ne semblent pas bien jouer avec la saisie de texte dans la routine find
. J'ai d'abord essayé de taper du texte de marqueur de poubelle, d'aller à la fin de la ligne, de taper un point-virgule, et d'utiliser Navigate/Last Edit Location
et de supprimer la poubelle, mais cela ne fonctionne pas non plus.
Ce Qui A Finalement Fonctionné
J'ai fait une macro comme suit (les raccourcis clavier indiqués dans les étapes individuelles sont ceux-ci de la" Mac OS X 10.5+ " keymap...utilisez les raccourcis ou les options de menu qui conviennent à votre configuration):
- en commençant par le curseur / curseur à l'emplacement souhaité, commencez à enregistrer une macro (c'est-à-dire
Edit > Macros > Start Macro Recording
) - tapez un seul caractère non-Espace/Non-mot, par exemple un point
- immédiatement après cela, tapez un seul " mot "du texte du marqueur de déchets que vous n'utiliserez nulle part ailleurs, par exemple "xcursorx"
- immédiatement après, tapez un autre non-espace/Non-mot caractère, par exemple une autre période (c'est-à-dire que vous avez maintenant tapé ".xcursorx.")
- aller à la fin de la ligne (par exemple Commande-Flèche droite)
- tapez un point-virgule
- immédiatement après le point-virgule (c'est-à-dire sans espace), tapez à nouveau le même "mot" du texte du marqueur d'ordures, mais sans les caractères non-Espace/Non-mot, par exemple type"; xcursorx "
- déplacez le curseur en arrière d'un " mot " (par exemple, option-Flèche gauche)
- trouve le mot au niveau du curseur (c'est-à-dire
Edit > Find > Find Word at Caret
) (do Pas utilisez lefind
normal en tapant manuellement "xcursorx") - supprimer le texte sélectionné (c'est à dire frapper la touche suppr ou retour arrière pour supprimer le deuxième "xcursorx" à la fin de la ligne)
- trouve l'occurrence précédente du dernier texte sélectionné (c'est-à-dire
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'est-à-dire appuyer sur la touche supprimer ou retour arrière)
- aller de l'avant un caractère (c'est-à-dire flèche droite, à après la deuxième période)
- supprimer deux caractères (c'est-à-dire appuyer deux fois sur Supprimer ou revenir en arrière pour supprimer les deux points)
- arrêter l'enregistrement de la macro (c'est à dire
Edit > Macros > Stop Macro Recording
) - donnez un nom à votre macro (par exemple, "lieu-point-virgule-à-la-fin-de-ligne")
- donnez à 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 que vous voulez, par exemple option-point-virgule)
Explication de quelques étapes obscures
Toutes les étapes ci-dessus ne sont pas nécessaire 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 en haut en utilisant func([{''}])
. Cependant, les étapes supplémentaires sont nécessaires pour certains cas de bord, par exemple si votre curseur est déjà à la toute fin de la ligne.
Comment L'Utiliser
Pour utiliser la macro, commencez par votre saisie normale (dans l'exemple en haut, tapez func([{'
provoquant l'apparition de func([{''}])
), 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.
Mise en garde
Cette solution est un peu un hack, car l'affichage saute un peu lorsque le texte de la poubelle est inséré puis supprimé. Cependant, au moins il fonctionne. Si quelqu'un peut comprendre comment atteindre le même objectif final sans nécessiter de texte de marqueur de déchets, ce serait génial.
Vous pouvez utiliser ce https://github.com/yyx990803/semi. Fournir cli et api pour répondre à vos besoins.
Définir la "semi"
règle de "error"
ou 2
Dans le fichier que vous souhaitez ajouter des points-virgules, cliquez avec le bouton droit de la souris, puis sélectionnez Fix ESLint Problems
en bas du menu
Ouais, 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 de fermeture, tapez simplement:
Alt + Enter
Qui fera apparaître le menu de l'Ampoule (Auto corrige ou change des choses, je n'ai pas de meilleur nom pour cela).
Espérons que si votre code est correct, ou que l'Accolade est le seul symbole de cette ligne, la seule option que vous avez est Terminate statement
et elle sera automatiquement focalisée, alors appuyez simplement sur Entrée clé pour Webstorm pour ajouter le point-virgule.
Cette façon vous évite de positionner manuellement le curseur et de taper vous-même le point-virgule, Mais soyez simplement sur cette ligne, et faites alt + enter+ enter et là vous l'avez.
Oui, ce n'est pas automatiquement là, mais c'est plus rapide et facile.
Normalement, webstorm / phpstorm le fera et laissera le curseur à l'intérieur des accolades:
Nécessite toujours une action manuelle, mais je viens de frapper End et ; à chaque fois. Mais Ctrl+Droit devrait fonctionner aussi, ces clés sont à portée de main.
Je frappe continuellement CTRL + S après chaque ligne pour enregistrer un document, donc ce ne serait qu'une nuisance mineure pour moi..
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 instruction lorsque vous appuyez sur 'Shift + 9' à droite? Sans frapper une autre combinaison folle sur le clavier à chaque fois.
- tapez une fonction dans l'éditeur;
- juste avant de taper ' ('allez dans Edition > Macros > Démarrer L'enregistrement des macros;
- tapez '(); 'et appuyez sur la touche' Left ' 2 fois si vous êtes de retour à l'intérieur;
- allez dans Edition > Macros > Démarrer L'enregistrement des macros et nommez-le (par exemple, point-virgule automatique; 5 allez dans Préférences > Apparence et Comportement > Keymap > Macros et cliquez avec le bouton droit sur 'Auto-Point-virgule', sélectionnez Ajouter un raccourci clavier et appuyez sur 'Maj + 9';
- quittez les préférences et revenez dans l'éditeur testez-le!
Vous pouvez en faire de nombreuses variétés en fonction de vos besoins. Par exemple, en ajoutant les accolades entre '({}) 'ou si vous utilisez' () ' plus souvent sans la nécessité d'un point-virgule à la fin, vous pouvez changer le raccourci en 'Ctrl+Maj+9', et le combo habituel ajoute simplement le régulier. Votre préférence!!!
Créez une macro pour passer à la fin de la ligne et insérer le point-virgule. Puis affectez la macro à la frappe de point-virgule. Ainsi, à tout moment de votre frappe, vous pouvez terminer la ligne de code.