web-dev-qa-db-fra.com

Touche de raccourci pour terminer la ligne par un point-virgule et passer à une nouvelle ligne dans Sublime Text 2

J'essaie de trouver un raccourci clavier au travail. Je viens d'avoir ce travail et j'utilise un Mac plus ou moins la première fois de ma vie.

De retour à la maison sur mon ordinateur portable, lors de l’utilisation d’Eclipse, il me semble qu’il n’y avait qu’un seul raccourci clavier qui:

  • Ajouter un ; au end de ma ligne actuelle (peu importe où le curseur se trouvait dans cette ligne)
  • Placez mon curseur au début d'une nouvelle ligne , avec le même niveau d'indentation que la ligne à laquelle je venais d'ajouter un point-virgule

Quelqu'un sait-il s'il s'agit d'un raccourci clavier spécifique à Eclipse ou sait-il comment reproduire ledit raccourci clavier dans Sublime Text 2?

32
Samuel Stiles

La meilleure solution pour cela est enregistrer une macro sur Sublime Text, puis l’assigner à un raccourci clavier. Suivez ces étapes:

  1. Créez une ligne telle que alert ('hello') et laissez le curseur à droite après la lettre 'o'.
  2. Ensuite, allez dans Outils> Enregistrer une macro pour commencer l’enregistrement.
  3. Presse Command+ aller au bout de la ligne.
  4. Presse ; et frapper Enter
  5. Arrêtez l’enregistrement de la macro en allant sur Outils> Arrêter l’enregistrement de la macro
  6. Vous pouvez maintenant tester votre macro par Outils> Lire la macro (facultatif).
  7. Enregistrez votre macro en allant dans Outils> Enregistrer la macro (ex: EndOfLine.sublime-macro).
  8. Créez un raccourci en l'ajoutant entre les crochets de votre dans vos préférences> raccourcis clavier - fichier utilisateur:

    {
    "keys": ["super+;"], "command": "run_macro_file", "args": {"file": "Packages/User/EndOfLine.sublime-macro"}
    }
    
  9. Maintenant, chaque fois que vous frappez Command+;, comme par magie, il placera le point-virgule à la fin de la ligne en cours et déplacera le curseur à la ligne suivante.

Bonne codage!

70
drdiv

Après avoir lu votre question environ trois fois, j'ai finalement réalisé que vous recherchiez un raccourci clavier pour effectuer les deux opérations. Oups.

Votre demande ressemble à la Ctrl+Shift+; raccourci clavier du Smart Semicolon plugin Eclipse. Bien que l'ajout de points-virgules d'un QI de niveau génie nécessite probablement un tout nouveau plug-in Sublime Text 2, vous pouvez facilement créer une liaison de clé intelligente avec point-virgule avec le texte Macros de Sublime Text. En fait, je ne les connaissais pas jusqu'à maintenant!

Dans ce cas, enregistrer la macro vous-même est en fait le moyen le plus rapide de la créer, plutôt que de copier/coller un nouveau fichier (et vous aurez maintenant l'expérience nécessaire pour en créer d'autres). Tout d’abord, ouvrez un nouveau fichier et tapez votre ligne de déchets préférée:

Lord Vetinari's cat|

Puis déplacez le curseur n'importe où dans la ligne:

Lord Veti|nari's cat

Maintenant, appuyez sur Ctrl+Q, la touche de raccourci pour Tools -> Record Macro. Si la barre d'état est activée, il vous avertira qu'il est "Commence à enregistrer [une] macro". presse End (si vous n'avez pas de End clé, passez à ci-dessous), puis ;, puis Enter. Enfin, appuyez sur Ctrl+Q à nouveau pour arrêter l'enregistrement. Lorsque vous le faites, la barre d'état affiche "Macro en cours d'enregistrement". Vérifiez que votre macro fonctionne en appuyant sur Ctrl+Shift+Q sur un segment de code de votre choix.

Juste en appuyant Enter ajustera l'indentation sur la ligne suivante en conséquence, tant que le paramètre "auto_indent" est défini sur true. Voir Preferences -> Settings – Default, ligne 59.

Lorsque vous êtes satisfait, enregistrez votre nouvelle macro avec Tools -> Save Macro.... J'ai enregistré le mien sous le nom Packages/User/smart-semicolon.sublime-macro. Mon dossier ressemblait à quelque chose comme ça; n'hésitez pas à le copier si vous ne pouvez pas ou ne voulez pas créer la macro manuellement:

[
    {
        "args":
        {
            "extend": false,
            "to": "eol"
        },
        "command": "move_to"
    },
    {
        "args":
        {
            "characters": ";"
        },
        "command": "insert"
    },
    {
        "args":
        {
            "characters": "\n"
        },
        "command": "insert"
    }
]

"extend": false, signifie simplement que la macro n’ajoutera aucun texte à la sélection de travail. En savoir plus sur les options pour les commandes à la page nofficial Docs Commands Page .

Maintenant que vous avez votre macro, nous pouvons lui attribuer une liaison de clé personnalisée. Ajoutez les lignes suivantes à votre fichier Preferences -> Key Bindings – User:

 { "keys": ["ctrl+shift+;"], "command": "run_macro_file", "args": {"file": "Packages/User/smart-semicolon.sublime-macro"}, "context":
      [
           { "key": "selector", "operator": "equal", "operand": "source.Java" }
      ]
 },

Remplacer Ctrl+Shift+; quelle que soit la combinaison de touches que vous préférez, enregistrez votre fichier et essayez-le. Le tableau "context" limite la liaison de clés aux fichiers Java (voir page Liens de clés de documents non officiels pour plus d'informations sur les contextes); si vous voulez que la liaison de clé soit active partout, utilisez plutôt cette ligne:

 { "keys": ["ctrl+shift+;"], "command": "run_macro_file", "args": {"file": "Packages/User/smart-semicolon.sublime-macro"} },

Ce NetTuts + article a beaucoup plus d'informations sur les macros et les lie aux clés; Je l'ai souvent référencé. Ce serEcho post ​​semble contenir plus d'informations sur la manière de rendre l'insertion plus extensible.

18
angerson

Vous pouvez également utiliser un paquet sublime prêt à l'emploi, construit à cet effet: AppendSemiColon

Vous pouvez utiliser package control pour l’installer, il suffit de rechercher «AppendSemiColon».

Place a semicolon at the end of the cursor's current line(s) by pressing:
Command+; on OS X
Ctrl+; on Windows and Linux

et

You can also automatically go to the next line at the same time like this:
Command+Shift+; on OS X
Ctrl+Shift+; on Windows and Linux

J'utilise ce paquet depuis un moment maintenant, et ça marche très bien. 

UPDATE: Comme l’a mentionné l’auteur dans un commentaire, vous pouvez également modifier les raccourcis clavier default si vous le souhaitez (personnellement, j’adore les paramètres par défaut). Par exemple, il suffit de changer:

[
  { "keys": ["ctrl+;"], "command": "append_semi_colon" }, 
  { "keys": ["ctrl+shift+;"], "command": "append_semi_colon", "args": {"enter_new_line": "true"} }
]

dans votre sublime-keymap pour utiliser les clés que vous voulez. 

J'ai testé la dernière version et cette fonctionnalité fonctionne aussi très bien. Il y avait un bogue qui faisait que des points-virgules supplémentaires étaient ajoutés de manière incorrecte lors de pressions supplémentaires sur des touches de raccourci - cette gêne mineure a également été corrigée. Merci MauriceZ/mzee99!

10
nonbeing

Je suis sur Sublime Text 3 ... inspiré par votre message, j'ai ajouté ce qui suit à mon.

{ "keys": ["ctrl+enter"], "command": "run_macro_file", "args": {"file": "Packages/User/endOfLine.sublime-macro"} },

Je suis étonné de voir combien de temps cela économise.

1
JMichael

Ctrl+Entervytvoří nový řádek se stejnou úrovní odsazení.

Nemohl jsem najít nic podobnéhoCtrl+Azmínil jsi

1
Felipe

@Felipe a couvert le deuxième point. Vous pouvez imiter le comportement du premier avec une macro ou un plugin simple. Je dis ou parce que vous n'avez pas décrit la position du curseur après avoir appuyé sur la combinaison de touches. Cela déplace-t-il le curseur à la ligne suivante? Est-ce qu'il insère une nouvelle ligne? Je pense que vous avez l'idée. 

Je suis presque sûr qu'Eclipse fonctionne sous OS X ainsi que sous Windows. Si vous êtes plus à l'aise avec cela, pourquoi ne pas l'utiliser (à moins que votre travail nécessite ST, bien sûr)? La plupart des liaisons de touches sont probablement les mêmes/similaires (bien, il s'agit probablement d'une commande plutôt que d'un contrôle pour les raccourcis).

http://www.Eclipse.org/downloads/?osType=macosx

Si vous continuez à utiliser ST, il vaut probablement la peine d'apprendre les bases des plugins. Beaucoup de choses peuvent être construites pour que vous ayez le même comportement que les autres éditeurs, cela demande juste un effort supplémentaire (en créant le plugin ou en trouvant un plugin qui le fait) dès le départ.

0
skuroda