Texte Sublime: ligne d'échange et retrait

3

J'ai récemment essayé l'atome. Malgré le fait que je sois trop lent, il y avait une chose qui me plaisait: la façon dont la mise en retrait automatique fonctionnait, pratiquement partout.

J'ai trouvé ici comment faire Paste + Indent the defaulten texte sublime.

Mais j'aimerais aussi que le:

{ "keys": ["ctrl+shift+up"], "command": "swap_line_up" },
{ "keys": ["ctrl+shift+down"], "command": "swap_line_down" },

devenir swap_line_up_and_indentainsi que si j'ai:

console.log('hello');
function() {

}

et ctrl+shift+downje reçois:

function() {
  console.log('hello'); // indented yai!!
}

Une chance?

Augustin Riedinger
la source

Réponses:

2

Donc, le moyen le plus simple de le faire (en dehors de l'écriture d'un plugin plutôt complet) est de macro . Voici swap_line_down_and_indent.sublime-macro:

[
    {
        "command": "swap_line_down"
    },
    {
        "command": "indent"
    }
]

et swap_line_up_and_indent.sublime-macro:

[
    {
        "command": "swap_line_up"
    },
    {
        "command": "move",
        "args":
        {
            "by": "lines",
            "forward": true
        }
    },
    {
        "command": "indent"
    }
]

Enregistrez les fichiers Packages/UserPackagesest le dossier ouvert lors de la sélection Preferences → Browse Packages…. Ensuite, éditez votre clavier personnalisé avec les éléments suivants:

{ 
    "keys": ["ctrl+shift+up"], 
    "command": "run_macro_file", 
    "args": 
    {
        "file": "res://Packages/User/swap_line_up_and_indent.sublime-macro"
    } 
},
{ 
    "keys": ["ctrl+shift+down"], 
    "command": "run_macro_file", 
    "args": 
    {
        "file": "res://Packages/User/swap_line_down_and_indent.sublime-macro"
    } 
}

et vous devriez être tous ensemble. Il y a cependant quelques mises en garde. Ces macros n'indenteront qu'un niveau, vous devrez donc peut-être utiliser Ctrl]pour indenter la ligne davantage. En outre, il est supposé que la ligne à mettre en retrait est la ligne inférieure après l' swap_line_[up|down]exécution de la commande.

MattDMo
la source
2
Merci pour la belle réponse. La macro elle - même ne fonctionne pas comme suggéré, mais je l' ai fixé en faisant: [ { "command": "swap_line_down" }, { "command": "reindent", "args": {"single_line": false} } ]. Pareil pour monter.
Augustin Riedinger
@AugustinRiedinger qui a parfaitement fonctionné pour moi
Aᴄʜᴇʀᴏɴғᴀɪʟ
0

Vous pouvez également le faire en utilisant le package "Chaîne de commandement". Installez le package et ajoutez simplement les éléments suivants au fichier de liaisons de clé utilisateur:

{
   "keys": ["ctrl+super+up"], 
   "command": "chain", 
   "args": {
     "commands": [
       ["swap_line_up"],
       ["reindent", {"single_line": false}]
     ],
   },
 },
{
  "keys": ["ctrl+super+down"], 
  "command": "chain", 
  "args": {
    "commands": [
      ["swap_line_down"],
      ["reindent", {"single_line": false}]
    ],
  },
}
iDuran
la source