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
К сожалению, пакет не работает, когда вы устанавливаете его из диспетчера пакетов.