it-swarm.com.ru

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

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

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


Я пытался это :

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')

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

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

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

Indentation options menu

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

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

287
angerson

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

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

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

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

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

112
erier

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

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

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

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

67
justin

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

"translate_tabs_to_spaces": false
3
vljs

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

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

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

2
TheStoryCoder

Чтобы автоматически преобразовать пробелы во вкладки при сохранении , добавьте следующий скрипт Python во вновь созданную подпапку с именем «UnexpandTabsOnSave» в «$ 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' )

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

0
sean2078