web-dev-qa-db-fra.com

Comment forcer Sublime Text à mettre en retrait deux espaces par onglet?

Existe-t-il un moyen de forcer Sublime Text 2 à toujours mettre en retrait deux espaces par onglet lors de l'utilisation de fichiers Ruby?

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

481
Mohamad

Si vous le voulez pour tous fichiers, allez à Preferences -> Settings - Default/User. Mais, comme l'indiquent plusieurs commentaires ci-dessous, les paramètres spécifiques à la syntaxe peuvent limiter la liste aux langues choisies.

Pour limiter cette configuration à des 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ée Ruby.sublime-settings

Enregistrez ces paramètres:

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

Répétez l'opération pour tous les autres types de syntaxe en ouvrant un fichier de ce type et en revenant aux préférences pour ouvrir le fichier de préférences approprié pour cette syntaxe.

J'ai édité ceci pour inclure la ligne "detect_indentation" selon les requêtes dans les commentaires; j'avais déjà utilisé Default/User pour définir la taille de ma tabulation et je n'avais pas besoin de la détection de tabulation, mais si cela était dû au facteur global config ou parce 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 cela puisse être le cas dans certains cas.

864
DGM

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_indentation dans votre configuration (vos paramètres d’utilisateur ou vos paramètres de syntaxe spécifique, selon que vous le souhaitiez ou non. par type de fichier):

{
    "tab_size": 2,
    "translate_tabs_to_spaces": true,
    "detect_indentation": false
}
162
James Chevalier

Vous pouvez également le faire avec le lien de texte dans la barre inférieure de Sublime Text 2 (à droite) qui indique "Taille de l'onglet 4" par défaut, cliquez dessus pour afficher une fenêtre avec des options permettant de définir la taille de l'onglet de 1 espace. jusqu’à 8 espaces et inclut des options pour convertir les onglets en espaces et les espaces en onglets.

Ressemble à ça:

Tab Options in Sublime Text 2

84
Taskism

Puis-je suggérer EditorConfig ? Il existe une extension pour charger automatiquement et appliquer le fichier .editorconfig. Ensuite, créez-en un à la racine de votre projet.

.editorconfig

[*.rb]
indent_style = tab
indent_size = 2

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


Voici à quoi ressemble mon propre .editorconfig.

# 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
27
Nate

J'utilise Stupid Indent package.

Install Package -> Stupid Indent

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

Copier les réglages (de la partie Ruby) dans.

{
    "configuration":
    [
        {
            "patterns": ["*.rb"],
            "tab_size": 2,
            "translate_tabs_to_spaces": true
        }
    ]
}
8
Rahn

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

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

1
Tim Koelkebeck