Comment forcer Sublime Text à indenter deux espaces par tabulation?

504

Existe-t-il un moyen de forcer Sublime Text 2 à toujours mettre en retrait deux espaces par tabulation lorsque vous travaillez avec des fichiers Ruby?

Je sais que l'indentation peut être définie sous l' view -> indentationoption de menu, mais elle ne colle pas. Chaque fois que j'ouvre un nouveau fichier et appuie sur tab, il revient à quatre espaces.

Mohamad
la source
Sublime est légèrement différent / bizarre par défaut. Bien qu'il puisse enregistrer le fichier avec plusieurs espaces, l'éditeur supprime automatiquement les deux espaces s'il l'identifie comme indentation.
Lime

Réponses:

899

Si vous le souhaitez pour tous les fichiers, accédez à Preferences -> Settings - Default/User. Mais comme plusieurs commentaires ci-dessous l'indiquent, les paramètres spécifiques à la syntaxe peuvent le limiter aux seules langues que vous choisissez.

Pour limiter cette configuration aux fichiers Ruby, ouvrez d'abord un fichier Ruby dans l'éditeur, puis accédez à Preferences -> Settings - Syntax Specific. Cela devrait ouvrir une fenêtre de paramètres nomméeRuby.sublime-settings

Enregistrez ces paramètres:

{
  "tab_size": 2,
  "translate_tabs_to_spaces": true,
  "detect_indentation": false
}

Répétez pour tout autre type de syntaxe en ouvrant un fichier de ce type et en revenant aux préférences pour ouvrir le fichier de préférences correct pour cette syntaxe.

J'ai modifié cela pour inclure la ligne "detect_indentation" par les demandes dans les commentaires; J'ai précédemment utilisé Default / User pour définir la taille de mes onglets, et je n'ai pas eu besoin de la détection des onglets, mais que ce soit à cause de la configuration globale ou du fait que j'ai rarement ouvert des fichiers avec des onglets, je ne sais pas.

Le redémarrage ne devrait pas être nécessaire, bien que dans certains cas il puisse l'être.

DGM
la source
11
À partir de la version 2181. Vous pouvez configurer les paramètres dans Préférences -> Paramètres - Par défaut / Utilisateur. Mieux vaut le mettre dans les paramètres utilisateur car c'est l'approche envisagée.
Kevin Jalbert
20
@KevinJalbert (et DGM) En fait, il devrait mettre cela dans des paramètres spécifiques à la syntaxe, de sorte que cela n'affecte que les fichiers Ruby.
Paul Hoffer
6
Notez que la valeur est vraie et non "vraie".
earthmeLon
1
Cela est particulièrement utile car la propre documentation du site Web de Sublime Text suggère de manière incorrecte d'utiliser camelCase au lieu de soulignés dans les touches de configuration ... encore. ( sublimetext.com/docs/indentation )
Eric Goldberg
@EricGoldberg - Je ne sais pas comment vous êtes arrivé à cette page de documentation, mais si vous allez sur sublimetext.com > Support, et sous Documentation, cliquez sur le lien Sublime Text 2, vous êtes amené sur sublimetext.com/docs/2 - à partir de là, vous pouvez trouver les documents sur l'indentation, et les touches de configuration utilisent correctement le soulignement: sublimetext.com/docs/2/indentation.html
jbyrd
166

Si vous souhaitez forcer le paramètre d'onglet choisi, en ignorant ce qui se passe probablement déjà dans le fichier, vous devez inclure detect_indentationdans votre configuration (vos paramètres utilisateur ou vos paramètres spécifiques à la syntaxe, selon que vous le souhaitez global ou par type de fichier):

{
    "tab_size": 2,
    "translate_tabs_to_spaces": true,
    "detect_indentation": false
}
James Chevalier
la source
Merci pour le conseil! Sans detect_indentationéteint, j'obtenais un comportement très étrange (il détectait incorrectement l'indentation et l'utilisait à la place de ce que j'avais spécifié dans mes paramètres).
JacobEvelyn
Faire cela dans les paramètres par défaut a fonctionné pour moi. Assurez-vous de vérifier si le paramètre existe déjà. Si vous l'ajoutez et qu'il est déclaré plus tard vrai, il restera défini comme vrai.
David
3
N'oubliez pas que les modifications apportées aux paramètres par défaut seront remplacées par les mises à jour de Sublime Text, etc. Les modifications apportées aux paramètres utilisateur ne seront pas écrasées.
James Chevalier
6
MERCI!! "detect_indentation":falseest critique sinon les autres paramètres sont ignorés. enfin!
zzzeek
C'est un bon point mais votre exemple est indenté de manière inappropriée ;-)
snow6oy
88

Vous pouvez également le faire avec le lien texte dans la barre inférieure de Sublime Text 2 (sur le côté droit) qui dit "Tab Size 4" par défaut, cliquez dessus et une fenêtre apparaît avec des options pour définir la taille de l'onglet à partir d'un espace jusqu'à 8 espaces et inclut des options pour convertir les tabulations en espaces et les espaces en tabulations.

Ressemble à ça:

Options des onglets dans Sublime Text 2

Taskisme
la source
3
Bon conseil, mais savez-vous si cela devient un cadre collant? Par exemple, la modification de l'indentation à partir de la barre de menus supérieure s'applique uniquement au fichier ouvert actuel, et non aux autres, ce qui était mon problème d'origine.
Mohamad
5
Cela ne marche pas . C'est une bonne astuce, mais ce n'est pas collant: la fermeture et la réouverture du fichier (ou l'ouverture d'un autre fichier) ramène l'indentation à quatre espaces.
Mohamad
1
Oui, ce n'est pas collant, c'est par fichier. Vous devez aller dans les paramètres de Sublime Text pour configurer votre paramètre par défaut pour les tabulations / espaces.
Taskism
Cela a résolu mon problème dans Sublime Text 3. Merci!
Adrian
29

Puis-je suggérer EditorConfig ? Il existe une extension pour charger automatiquement et appliquer le .editorconfigfichier. Il vous suffit ensuite d'en créer un à la racine de votre projet.

.editorconfig

[*.rb]
indent_style = tab
indent_size = 2

De cette façon, vos paramètres sont spécifiques au projet et spécifiques au fichier si vous utilisez des styles différents pour chaque projet ou langue.


Voici à quoi .editorconfigressemble la mienne .

# editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
Nate
la source
2
Je ne voulais pas en faire un changement global. C'était donc la seule solution qui fonctionnait. J'ai fait quelques recherches sur EditorConfig et cela semble très bien pour les IDE qui le supportent.
Neil Monroe
1
Il se trouve que j'avais déjà un .editorconfig dans mon projet et je ne le savais même pas. (angular-cli en génère un)
uglycoyote
9

J'utilise le package Stupid Indent .

Install Package -> Stupid Indent

Preferences-> Package Settings-> Stupid Indent->Setting-Users

Copiez les paramètres (en Rubypartie) dans.

{
    "configuration":
    [
        {
            "patterns": ["*.rb"],
            "tab_size": 2,
            "translate_tabs_to_spaces": true
        }
    ]
}
Rahn
la source
yup c'est ce dont j'ai besoin: D
Dragutescu Alexandru
Impressionnant. Merci beaucoup :)
krithikaGopalakrisnan
AVERTISSEMENT . Les paramètres par défaut et personnalisés Stupid Indent forcent à remplacer les paramètres Sublime Text et EditorConfig . Merci.
Саша Черных
1

J'ai suivi les réponses précédentes, y compris en ajoutant la ligne detect_indentation, et mes tabulations étaient toujours de cinq espaces. Ensuite, j'ai réalisé que la sélection à Preferences -> Settings -> More -> Syntax Specific -> Userpartir d'un fichier rubis s'ouvrait Ruby on Rails.sublime-settingspour moi, non Ruby.sublime-settings.

J'ai renommé mon Ruby on Rails.sublime-settingsfichier en Ruby.sublime-settings. Enfin, les onglets à deux espaces ont fonctionné! Je suis allé de l'avant et j'ai également mis les mêmes paramètres Ruby on Rails.sublime-settings, juste pour être sûr.

Tim Koelkebeck
la source