Піднесений текст 3, перетворіть пробіли у вкладки


192

Я знаю, що про це багато публікацій, але я не міг змусити її працювати.
Я використовую вкладки для кодування. Чи є спосіб конвертувати завжди пробіли на вкладки? Тобто на відкритих та збережених файлах? Хтось отримав ідею?

// редагувати:
Моє бажання зробити це автоматично ! -> відкрити, зберегти або на льоту
Хто-небудь знає, як це зробити?


Я спробував це :

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
}

Плагін, який ви розмістили, насправді працює для мене на ST3, build 3059. Чи можете ви відкрити консоль Ctrl + ~і побачити, чи не дає вам помилок плагіна? І якщо у вас встановлений пакетний контроль, чи можете ви побачити, чи ExpandTabsOnSaveвказаний він як встановлений плагін?
ангерсон

божевільний, здається, встановлений (вказаний у списку пакунків) і в консолі я не можу знайти жодних помилок :-(
chris

Спробуйте додати print("debug")або подібний до плагіна, щоб побачити, чи він виконує збереження чи ні.
ангерсон

omg, його твори! був невірний каталог на машині Windows, пакунки перераховані в користувачеві /.../ AppData / Роумінг / SublimeText3 / Пакети Дякую!
chris

Будьте впевнені, що ви встановили цей вид як активний вигляд для цього вікна перед запуском команди. Можливо, це не дуже ймовірно, але, як ви це опублікували, можливо, воно розширює вкладки іншої сторінки, ніж ту, яку ви намагаєтеся зберегти. Навіть при огляді фокусу, я думаю, є ймовірність, що він може зберегтись у неправильному файлі, але принаймні ви можете мінімізувати ризик.
skuroda

Відповіді:


377

У правому нижньому куті вікна Піднесений текст ви побачите індикатор відступу, який виглядає приблизно так:

Меню параметрів відступу

Натиснувши на нього, відкриється меню з параметрами, щоб відрегулювати ваші налаштування відступу, і що ще важливіше Convert Indentation to Tabs/Spaces,.

введіть тут опис зображення

Це ж меню вказано під View -> Indentation.


42
так, я знаю. Моє бажання зробити це автоматично ... будь-яка ідея?
chris

2
@chris ツ Ага. Чи можете ви переформатувати своє питання, щоб зробити це більш очевидним? Я пропустив ваш сенс, тож можуть і інші.
ангерсон

У мене немає цієї панелі стану внизу - як я можу це отримати?
геодезичний

1
І це робиться у всьому файлі, і зробити це неможливо лише підбором.
not2qubit

Дуже хороша. Я також зробив 'command-a', щоб вибрати все, 'command- [' для відміни відступу, потім 'edit> line> reindent', щоб виправити файл. Я впевнений, що це можна вбудувати в макрос.
Брукс Дюбуа

130

У нижній частині вікна Sublime ви побачите щось, що відображає налаштування вкладки / пробілу.

Потім ви отримаєте спадне меню з купою варіантів. Важливі варіанти:

  • Перетворити відступ у простори
  • Перетворення відступів на вкладки

Застосуйте бажане налаштування до всього документа.

Сподіваюся, це допомагає.


2
Я б хотів, щоб це було зроблено під час завантаження та автоматично ... для всіх файлів, які я відкриваю. Я маю на увазі: перетворення проміжків проміжків у вкладки. Він запускається автоматично при завантаженні :-)
Filip OvertoneSinger Rydlo

1
Я чую тебе про це. Я вважаю за краще вкладки, Але я розумію, чому багато код пишеться з пробілами. З пробілами не буде невідповідностей між IDE - простір - це простір, це пробіл. Вкладки можуть займати змінну кількість пробілів між IDE та робити код дивним.
erier

Привіт @Green - що з цим не працює? Давайте
розробимо

80

Як ви вже могли знати, ви можете налаштувати свої параметри відступу Preferences.sublime-settings, наприклад, у:

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

Це дозволить вашому редактору використовувати вкладки, що мають ширину 4 проміжки, і замінить поведінку за замовчуванням, що спричиняє, що Sublime відповідає з відступом файлу, який ви редагуєте. За допомогою цих параметрів повторне відступ файла призведе до заміни будь-яких пробілів на вкладки.

Що стосується автоматичного повторного відступу під час відкриття файлу, це не так просто (але, мабуть, це не чудова ідея, оскільки зміни білого простору спричиняють хаос у файлі). Що може бути кращим ходом дій: ви можете скласти ярлик для повторного відступу та просто запустити це, коли відкриєте новий файл, який потребує виправлення.


13

Ви можете використовувати палітру команд для вирішення цієї проблеми.

Крок 1: Ctrl + Shift + P(для активації палітри команд)

Крок 2: Введіть "Відступ", Виберіть "Indentation: Convert to Tabs"


1
Відмінно. Дякую.
RJ

Найкраще рішення. Дякую!
Матвій К

7

У моєму випадку ця лінія вирішила проблему:

"translate_tabs_to_spaces": false

4

Ось рішення, яке автоматично перетворюватиметься на вкладки кожного разу, коли ви відкриєте файл.

Створіть цей файл .../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")

ПРИМІТКА. Це призводить до того, що після відкриття файлу файл перебуває в незбереженому стані, навіть якщо не відбулося фактичного перетворення простору на вкладку ... можливо, деякі можуть допомогти виправити це ...


Я думаю, ти мав на увазі .../Packages/User/on_file_load.py, не.php
Пранав Нуталапаті

@PranavNutalapati Дякую, що це зробив.
TheStoryCoder

Так, звісно. Нема проблем.
Пранав Нуталапаті

спробуйте on_loadзамість on_load_async.
Педро Гос

3

Щоб автоматично перетворити пробіли у вкладки при збереженні , додайте наступний скрипт 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

Ви можете замінити вкладки пробілами у всіх файлах проекту:

  1. Виконайте заміну всіх Ctrl+Shif+F
  2. Встановити пошук регулярного вибору ^\A(.*)$
  3. Встановити каталог на Your dir
  4. Замінити на \1

    введіть тут опис зображення

  5. Це призведе до відкриття всіх файлів проекту, а їх буфер позначений як брудний. Завдяки цьому тепер ви можете додатково включити наступні параметри піднесеного тексту, щоб обрізати всі файли із пробілом та забезпечити новий рядок у кінці кожного файлу.

    Ви можете ввімкнути ці налаштування, перейшовши в меню Preferences -> Settingsі додавши цей вміст у файл налаштувань:

    1. "ensure_newline_at_eof_on_save": true,
    2. "trim_trailing_white_space_on_save": true,
  6. Відкрийте консоль Sublime Text, перейшовши в меню View -> Show Console (Ctrl+`)і виконайте команду: import threading; threading.Thread( args=(set(),), target=lambda counterset: [ (view.run_command( "expand_tabs", {"set_translate_tabs": True} ), print( "Processing {:>5} view of {:>5}, view id {} {}".format( len( counterset ) + 1, len( window.views() ), view.id(), ( "Finished converting!" if len( counterset ) > len( window.views() ) - 2 else "" ) ) ), counterset.add( len( counterset ) ) ) for view in window.views() ] ).start()
  7. Тепер збережіть усі змінені файли, перейшовши в меню File -> Save All

0

якщо у вас Mac, просто скористайтеся довідковою опцією (як правило, останній варіант на панелі меню Mac), тоді введіть: "відступ вкладки" та виберіть ширину відступу вкладки.

але, як правило, ви можете слідувати цьому шляху: view -> отступ



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.