Lorsque je sélectionne plusieurs lignes Sublime Text 3 et les indenter comme un bloc ( en utilisant Tabou Ctrl+ ]), il ajoute les nouveaux caractères blancs au début de la première ligne en dehors de la sélection au lieu de l' intérieur.
Dites que j'ai un bloc de code qui ressemble à ceci (Note: tout ce qui suit est juste pour illustrer l'idée; s'il vous plait, ne commencez pas à me dire où sont mes accolades, ni combien j'indique, etc.):
int firstVar, secondVar;
firstVar = 4;
secondVar = 11;
Maintenant, je reviens sur ce code plus tard et je dois rendre les assignations de valeur conditionnelles:
int firstVar, secondVar;
int myVar = 0;
int result = someThing(myVar);
if (result == GOOD_RESULT)
{
firstVar = 4;
secondVar = 11;
}
else
{
}
Bien sûr, je veux bien le mettre en retrait, alors je sélectionne les deux éléments de la if
clause et les mets en retrait sous forme de bloc, avec la Tabclé, et Sublime Text, comme prévu, précéde les caractères d’indentation (une tabulation ou un nombre prédéterminé de caractères). espaces) à chaque ligne sélectionnée:
[snip]
if (result == GOOD_RESULT)
{
firstVar = 4;
secondVar = 11;
}
else
{
}
Ensuite, comme je vais simplement leur attribuer différentes valeurs dans la else
clause, je les copie et les colle ici, prêtes à être modifiées:
if (result == BAD_RESULT)
{
firstVar = 4;
secondVar = 11;
}
else
{
firstVar = 4;
secondVar = 11;
}
Et il y a le problème: Sublime Text a indenté la première ligne de mon bloc, mais n'a pas inclus les caractères d'indentation dans la sélection . Ainsi, lorsque je l'ai copié-collé, je n'ai pas obtenu l'indentation de la première ligne. (J'aimerais pouvoir changer la couleur de fond pour mieux illustrer.)
Non seulement cela, mais si je l'avais coupé et collé à la place, les caractères indentés auraient été laissés derrière.
Je peux le contourner un peu en essayant de me rappeler de copier / couper avant de mettre en retrait, mais a) je ne me souviens pas toujours et b) alors je dois indenter le code deux fois.
Est-ce que quelqu'un connaît un correctif pour cela?
Je crois que ce n'est pas un bug, mais le comportement normal, donc je n'ai pas de solution. Au lieu de cela, j'ai une explication et un cas d'utilisation suggéré.
Cela se produit parce que vous ne copiez pas l'indentation.
Tu fais cela:
Vous devrez également sélectionner cet espace avant de copier. Cela peut être fait facilement de deux manières:
Commencez votre sélection par un double clic sur l'indentation de cette ligne. Cela sélectionnera tout cela, tout comme il sélectionnerait un mot (composé d'espaces blancs). Cela présente également l’avantage que la sélection change par mots plutôt que par caractères.
Commencez votre sélection à la fin de la ligne précédente
la source
else
clause (après le crochet), ainsi l'indentation perdue est récupérée. Mais si vous coupez de si, alors oui, les espaces sont laissés derrière. Une autre solution serait de couper / copier des lignes entières, puis de les insérer avec une pâte de l’historique. Cependant, je ne connais pas de raccourci kbd pour cette commande.