web-dev-qa-db-fra.com

Sublime Text 2 déplace le curseur hors des parenthèses, des guillemets ou des crochets

J'ai besoin d'un moyen rapide pour faire sauter le curseur en dehors des qoutes de bouclage automatique ou d'autres éléments de syntaxe. Je ne veux pas avoir à descendre jusqu'à mes touches fléchées à chaque fois, et je ne veux certainement pas aller à ma souris.

enter image description here

Existe-t-il un moyen rapide et facile de résoudre ce problème pour mon flux de travail?

37
Jordan

Vous pouvez utiliser un raccourci (shift+space, ou ce que vous voulez) pour déplacer le curseur.

Dans votre Key Bindings - User:

{ "keys": ["shift+space"], "command": "move", "args": {"by": "characters", "forward": true} }
58
Riccardo Marotti

J'ai également fait quelques raccourcis clavier avec des macros.

Vous devez créer une macro pour ceux-ci, sauf si vous voulez passer plus de temps à les construire, mais c'est vraiment facile. Allez simplement dans Sublime Text, Tools> Record Macro, ou appuyez sur ctrlQ. Enregistrez le fichier dans Packages/User /, puis appuyez sur , pour ouvrir vos paramètres utilisateur. Collez les paramètres ci-dessous et boum. (Le | ci-dessous représente mon curseur)

enter image description here

Voici celui que j'ai choisi:


Fonction auto-bracketizer

Lorsque le curseur est ici:

totallyAwesomeness(|) 

Utilisez l'option + le raccourci tilda .

⌥ ~

Cela préremplit la fonction avec des crochets et le texte '# code ...' mis en évidence. Cela ne fonctionne qu'à l'intérieur de la parenthèse.

Paramètres utilisateur sublimes

{
"keys": ["option+`"], "command": "run_macro_file", "args": {"file": "Packages/User/superBracketizeFunction.sublime-macro"}
},

Télécharger la macro


Ligne de fin automatique avec point-virgule

Lorsque le curseur est ici:

echo 'say what!!??|'

Utilisez la commande + raccourci point-virgule .

⌘;

Cela ajoute une fermeture; à la fin de la ligne actuelle et vous déplace vers la ligne en dessous. Cela fonctionne réellement où que vous soyez sur la ligne.

Paramètres utilisateur sublimes

{
"keys": ["super+;"], "command": "run_macro_file", "args": {"file":  "Packages/User/superEndLineWiSemiColin.sublime-macro"}
},

Télécharger la macro


Argument de sortie et fonction de sortie

Lorsque votre curseur se trouve n'importe où dans la fonction, il se retrouve ici:

public function totallyAwesomeness()
    {
        echo 'say what!!??';
    } |
    echo 'yep... that just happened';

Utilisez la commande + entrez le raccourci .

⌘ Entrez

Cela vous permettra de sauter en dehors de l'argument et d'un espace à droite, ainsi que n'importe où à l'intérieur de la fonction, il vous fera sortir de celui-ci en étant simplement le crochet de fermeture.

Paramètres utilisateur sublimes

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

Télécharger la macro


Au cas où vous ne savez pas quel est le chemin d'accès à votre dossier utilisateur, il est indiqué ci-dessous.

/Users/alexcory/Library/Application Support/Sublime Text 3/Packages/User/

De plus, le dossier Bibliothèque est généralement masqué, vous pouvez donc télécharger un programme appelé Revealer qui vous permettra de basculer ces fichiers cachés.

Si vous voulez savoir comment j'ai fait ça, venez me frapper et je vais vous montrer! :RÉ

14
Alex Cory

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

  1. Créez une ligne telle que alert ('bonjour') et laissez le curseur juste après la lettre 'o'.
  2. Allez ensuite dans Outils> Enregistrer une macro pour démarrer l'enregistrement.
  3. Presse Command+ pour aller en fin de ligne.
  4. Presse ; et frapper Enter
  5. Arrêtez l'enregistrement de la macro en allant dans Outils> Arrêter l'enregistrement de la macro
  6. Vous pouvez maintenant tester votre macro en Outils> Macro de lecture (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 crochets dans 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+;, il placera comme par magie le point-virgule à la fin de la ligne actuelle et déplacera le curseur sur la ligne suivante.

Bon codage!

9
drdiv

Une manière plus complète de créer une liaison de clé serait:

    { "keys": ["shift+space"], "command": "move", "args": {"by": "characters", "forward": true}, "context":
        [
            { "key": "following_text", "operator": "regex_contains", "operand": "^[)\"\\]]", "match_all": true },
            { "key": "auto_complete_visible", "operator": "equal", "operand": false }
        ]   
    },

En supposant que vous vouliez shift+space comme raccourci. Ou vous pouvez le changer en tab ainsi que

Tel que trouvé dans http://www.sublimetext.com/forum/viewtopic.php?f=3&t=5174#p23086

5
hsbrighenti

Après le poste de Riccardo Marotti;

Si vous souhaitez contourner le crochet sur la ligne suivante, vous pouvez remplacer "caractères" par "lignes" dans la section args.

{ "keys": ["shift+space"], "command": "move", "args": {"by": "lines", "forward": true} }
3
ForgetfulFellow

Je viens d'avoir cette fonctionnalité partiellement implémentée à l'aide de un plugin nommé run_multiple_commands.py (voir ci-dessous)

( testé uniquement sur ST3, mais le plugin est antérieur à la première version de ST3 et devrait également fonctionner sur ST2).

La configuration des raccourcis est la suivante:

{
    "keys": ["shift+space"],
    "command": "run_multiple_commands",
    "args": {
        "commands": [
            {"command": "move", "args": {"by": "characters", "forward": true} }
        ]
    },
    "context":
    [
        { "key": "preceding_text", "operator": "regex_contains", "operand": "[)\\]}'\"]$", "match_all": true},
        { "key": "auto_complete_visible", "operator": "equal", "operand": false }
    ]
},

{
    "keys": ["shift+space"],
    "command": "run_multiple_commands",
    "args": {
        "commands": [
            {"command": "move", "args": {"by": "characters", "forward": true} },
        ]
    },
    "context":
    [
        { "key": "following_text", "operator": "regex_contains", "operand": "^[)\\]}'\"]", "match_all": true },
        { "key": "auto_complete_visible", "operator": "equal", "operand": false }
    ]
},

{
    "keys": ["shift+space"],
    "command": "run_multiple_commands",
    "args": {
        "commands": [
            {"command": "move_to", "args": {"to": "brackets"} },
        ]
    },
    "context":
    [
        { "key": "following_text", "operator": "regex_contains", "operand": "^[(\\[{]", "match_all": true },
        { "key": "auto_complete_visible", "operator": "equal", "operand": false }
    ]
},

{
    "keys": ["shift+space"],
    "command": "run_multiple_commands",
    "args": {
        "commands": [
            {"command": "move_to", "args": {"to": "brackets"} },
            {"command": "move", "args": {"by": "characters", "forward": true} },
        ]
    },
    "context":
    [
        { "key": "following_text", "operator": "not_regex_contains", "operand": "^[)\\]}'\"]", "match_all": true },
        { "key": "preceding_text", "operator": "not_regex_contains", "operand": "[)\\]}'\"]$", "match_all": true},
        { "key": "following_text", "operator": "not_regex_contains", "operand": "^[(\\[{]", "match_all": true },
        { "key": "auto_complete_visible", "operator": "equal", "operand": false }
    ]
},

Un raccourci (shift+space) pour quatre conditions:

  1. le curseur est juste après les guillemets ou les parenthèses fermantes/parenthèses:

    faire avancer un personnage

  2. le curseur est juste avant les guillemets ou les parenthèses fermantes/parenthèses:

    faire avancer un personnage

  3. le curseur est juste avant d'ouvrir les parenthèses/parenthèses:

    passer aux parenthèses fermantes/crochet

  4. ! 1 &&! 2 &&! 3:

    passer aux parenthèses fermantes/crochet

    et faire avancer un personnage de plus

Pour utiliser cette configuration dans votre ST, vous devez d'abord ajouter un fichier nommé run_multiple_commands.py à ton .../Package/User/ répertoire, et dont le contenu est le deuxième élément de code de Cet article

Cette solution est très bien pour un usage quotidien mais n'est pas parfaite car:

  1. le curseur ne peut pas sauter hors des guillemets (il suffit de passer dessus lorsque le curseur est directement suivi d'un).
  2. le curseur ne peut pas sauter hors des parenthèses, guillemets ou crochets les plus proches lorsque le bloc de code est commenté.
2
kittykitty

Ctrl + M est celui par défaut que j'ai sur la machine Windows. Simplement fais-le

2
Hassaan

sur un Dell XPS, Ctrl Enter fait l'affaire pour moi

2
timpham

J'utilise ctrl+f pour déplacer le curseur d'un espace vers l'avant. Aussi, sur mac, j'ai échangé caps lock avec ctrlcaps lock+f est beaucoup plus facile à atteindre. Cela fonctionne assez bien pour moi.

1
y.c

Peut-être le home et le end clé sont près de vos doigts.

1
Wouter Vandenputte

J'ai trouvé un autre moyen qui se trouve dans les sublimes raccourcis clavier. Fondamentalement, je modifie simplement les raccourcis clavier pour les parenthèses à fermeture automatique, c'est-à-dire que je remplace "contents": "($0)" par "contents": "($1)$0". Ensuite, appuyez simplement sur Tab pour sortir de la parenthèse. J'ajoute donc dans mes raccourcis clavier ce qui suit:

{ "keys": ["("], "command": "insert_snippet", "args": {"contents": "($1)$0"}, "context":
    [
      { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
      { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
      { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
    ]
},

Et similaire pour les crochets, les accolades et les guillemets simples et doubles.

1
iDuran
Ctrl + PgUp Cycle up through tabs

Ctrl + PgDn Cycle down through tabs

Cela peut aller à la fin des parenthèses

0
Gank