web-dev-qa-db-fra.com

Sublime Text 3, convertissez les espaces en onglets

Je sais qu'il y a beaucoup de messages à ce sujet, mais je ne pouvais pas le faire fonctionner.
J'utilise des onglets pour le codage. Existe-t-il un moyen de toujours convertir les espaces en tabulations? C'est à dire. sur ouvrir et sur Enregistrer des fichiers? Quelqu'un a une idée?

// modifier:
Mon désir est de le faire automatiquement! -> ouvrir, sauvegarder ou à la volée
Est-ce que quelqu'un sait comment faire?


J'ai essayé ceci :

import sublime, sublime_plugin, os

class ExpandTabsOnSave(sublime_plugin.EventListener):
  # Run ST's 'expand_tabs' command when saving a file
  def on_pre_save(self, view):
    if view.settings().get('expand_tabs_on_save') == 1:
      view.window().run_command('expand_tabs')

Et voici mes paramètres utilisateur:

{
    "auto_complete_selector": "source - comment, meta.tag - punctuation.definition.tag.begin",
    "auto_indent": true,
    "detect_indentation": true,
    "draw_white_space": "all",
    "ensure_newline_at_eof_on_save": true,
    "expand_tabs_on_save": true,
    "font_face": "SourceCodePro-Regular",
    "font_size": 10,
    "format_on_save": true,
    "ignored_packages":
    [
        "Vintage"
    ],
    "indent_to_bracket": true,
    "open_files_in_new_window": false,
    "smart_indent": true,
    "tab_size": 4,
    "translate_tabs_to_spaces": false,
    "trim_automatic_white_space": true,
    "trim_trailing_white_space_on_save": true,
    "use_tab_stops": false,
    "Word_wrap": false
}
147
chris

Dans le coin inférieur droit de la fenêtre Sublime Text, vous verrez un indicateur d'indentation qui ressemble beaucoup à ceci:

Indentation options menu

En cliquant dessus, vous ouvrez un menu avec des options pour ajuster vos préférences d'indentation et, plus important encore, pour convertir des espaces en onglets et inversement. 

Le même menu est répertorié sous View -> Indentation.

287
angerson

Au bas de la fenêtre Sublime, vous verrez quelque chose représentant votre paramètre de tabulation/espace.

Vous obtiendrez alors un menu déroulant avec un tas d'options. Les options qui vous intéressent sont:

  • Convertir l'indentation en espaces
  • Convertir l'indentation en onglets

Appliquez le paramètre souhaité à l'ensemble du document.

J'espère que cela t'aides.

112
erier

Comme vous le savez peut-être déjà, vous pouvez personnaliser vos paramètres de retrait dans Preferences.sublime-settings, par exemple:

"detect_indentation": true,
"tab_size": 4,
"translate_tabs_to_spaces": false

Cela définira votre éditeur pour qu'il utilise des onglets larges de 4 espaces et remplacera le comportement par défaut qui oblige Sublime à correspondre à l'indentation du fichier que vous modifiez. Avec ces paramètres, la ré-indentation du fichier entraînera le remplacement des espaces par des tabulations.

S'agissant de la réindentation automatique lors de l'ouverture d'un fichier, ce n'est pas aussi simple (mais ce n'est probablement pas une bonne idée, car les changements d'espaces font des ravages dans les différences de fichiers). Ce qui pourrait être un meilleur plan d’action: vous pouvez mapper un raccourci pour ré-indentation et ne le déclencher que lorsque vous ouvrez un nouveau fichier qui doit être corrigé.

67
justin

Dans mon cas, cette ligne a résolu mon problème:

"translate_tabs_to_spaces": false
3
vljs

Vous pouvez utiliser la palette de commandes pour résoudre ce problème.

Étape 1: Ctrl + Shift + P (pour activer la palette de commandes)

Étape 2: Tapez "Indentation", choisissez "Indentation: Convert to Tabs"

2
Jojoleo

Voici une solution qui convertira automatiquement en onglets chaque fois que vous ouvrez un fichier.

Créez ce fichier: .../Packages/User/on_file_load.py:

import sublime
import sublime_plugin

class OnFileLoadEventListener(sublime_plugin.EventListener):

    def on_load_async(self, view):
        view.run_command("unexpand_tabs")

REMARQUE. Cela signifie que le fichier se trouve dans un état non sauvegardé après l'avoir ouvert, même si aucune conversion d'espace-onglet n'a eu lieu ... Peut-être que certains peuvent aider à résoudre ce problème ...

2
TheStoryCoder

Pour convertir automatiquement les espaces en onglets à la sauvegarde , ajoutez le script Python suivant à un nouveau sous-dossier appelé "UnexpandTabsOnSave" dans "$ SUBLIME_HOME $\Packages \":

import sublime, sublime_plugin, os

class ConvertSpacesToTabsOnSave( sublime_plugin.EventListener ):
  # Run Sublime's 'unexpand_tabs' command when saving any file
  def on_pre_save( self, view ):
    view.window().run_command( 'unexpand_tabs' )

Merci pour la ressource initiale.

0
sean2078