Sublime Text 3, конвертировать пробелы в вкладки

Я знаю, что есть много сообщений об этом, но я не мог заставить его работать.
Я использую вкладки для кодирования. Есть ли способ конвертировать всегда пробелы в вкладки? То есть по открытию и по сохранению файлов? У кого-нибудь появилась идея?

//изменить:
Я хочу сделать это автоматически! → открыть, сохранить или на лету
Кто-нибудь знает, как это сделать?


Я пробовал this:

import sublime, sublime_plugin, os

class ExpandTabsOnSave(sublime_plugin.EventListener):
  # Run ST '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')

И вот мой пользователь Настройки:

{
    "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
}

Ответ 1

В правом нижнем углу окна Sublime Text вы увидите индикатор отступов, который выглядит примерно так:

Indentation options menu

Нажав на это, вы откроете меню с настройками для настройки ваших настроек отступов и, что более важно, для преобразования пробелов в вкладки и наоборот.

То же меню указано в разделе View -> Indentation.

Ответ 2

В нижней части окна Sublime вы увидите что-то, представляющее настройки вашей вкладки/пространства.

Затем вы получите раскрывающееся меню с множеством опций. Возможные варианты:

  • Преобразование отступов в пробелы
  • Преобразование отступов в закладки

Примените желаемую настройку ко всему документу.

Надеюсь, что это поможет.

Ответ 3

Как вы уже знаете, вы можете настроить параметры отступа в Preferences.sublime-settings, например:

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

Это заставит ваш редактор использовать вкладки шириной 4 пробела и переопределит поведение по умолчанию, которое заставляет Sublime соответствовать отступлению любого файла, который вы редактируете. С помощью этих настроек повторный отступ файла приведет к замене любых пробелов на вкладки.

Что касается автоматического повторного отступов при открытии файла, это не так просто (но, вероятно, это не отличная идея, так как изменение пробелов приводит к разрыву в файлах). Что может быть лучшим способом: вы можете сопоставить ярлык для повторного заглавия и просто вызвать это при открытии нового файла, который нуждается в исправлении.

Ответ 4

В моем случае эта строка решила проблему:

"translate_tabs_to_spaces": false

Ответ 5

Вы можете использовать командную палитру, чтобы решить эту проблему.

Шаг 1: Ctrl + Shift + P (чтобы активировать палитру команд)

Шаг 2: введите "Отступ", выберите "Indentation: Convert to Tabs"

Ответ 6

Вот решение, которое будет автоматически преобразовываться во вкладки всякий раз, когда вы открываете файл.

Создайте этот файл: .../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")

НОТА. Это приводит к тому, что файл находится в несохраненном состоянии после его открытия, даже если не было никакого фактического преобразования пространства в табуляцию... возможно, некоторые могут помочь с исправлением для этого...

Ответ 7

Чтобы автоматически преобразовывать пробелы во вкладки при сохранении, добавьте следующий скрипт Python во вновь созданную подпапку с именем "UnexpandTabsOnSave" в "$ SUBLIME_HOME $\Packages \":

import sublime, sublime_plugin, os

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

Спасибо за начальный ресурс.

Ответ 8

Вот как вы это сделаете автоматически при сохранении: https://coderwall.com/p/zvyg7a/convert-tabs-to-spaces-on-file-save

К сожалению, пакет не работает, когда вы устанавливаете его из диспетчера пакетов.