Як виправити / перетворити відступ простору у піднесеному тексті?


228

Приклад: Якщо у мене документ із 2-ма пробілами, і я хочу, щоб він мав 4 пробіли, як я можу автоматично перетворити його за допомогою редактора Sublime Text?

Відповіді:


525

Ось акуратний трюк в Sublime Text 2 або 3 для перетворення інтервалу відступу в документі.

TL; DR:

Перетворення з 2 простору в 4 пробіли:

Переконайтеся, що для ширини вкладок встановлено значення 2. Перетворіть 2-пробільний відступ на вкладки, перейдіть на ширину вкладки 4 та перетворіть відступ назад у пробіли.

Детальний опис:

Йти до:

View -> Indentation

Він повинен читати:

  • Indent using spaces [x]
  • Tab width: 2

Виберіть:

  • Convert Indentation to Tabs

Потім виберіть:

  • Tab width: 4
  • Convert Indentation to Spaces

Зроблено.


5
Дякую! : D Економив багато часу. Примітка. Ви також можете "знайти: space-space => select all => tab"
Automatico

11
Я створив макрос для піднесеного, який робить все це для вас gist.github.com/joshmfrankel/5707020 . Насолоджуйтесь :-)
Джош Франкель

2
Хочу зазначити, що "Перетворити відступ у пробіли" також працює, якщо у вас є текстовий файл, де вкладки не займають усієї ширини вкладки. Скажімо, для файлу, де автор використовував вкладки для форматування стовпців, тож якщо ви хочете знайти та замінити на вкладках, отримані стовпці більше не вишикуються. Використання "Перетворити відступ у пробіли" дозволить йому правильно вишикуватися
Джо Пінсоно

Я також створив для цього колеги макроси та приклади сполучень клавіш, перш ніж я побачив макрос Джоша. Шахта використовує ctrl + 2 і ctrl + 4, щоб дозволити перемикання вперед і назад: gist.github.com/beaugunderson/8588871
Beau

74

Насправді я зрозумів, що краще, ніж мій розум, такі налаштування користувачів визначати так:

"translate_tabs_to_spaces": true,
"tab_size": 2,
"indent_to_bracket": true,
"detect_indentation": false

Це detect_indentation: falseособливо важливо, оскільки воно змушує Sublime шанувати ці параметри у кожному файлі, на відміну від View -> Indentationналаштувань.

Якщо ви хочете поцікавитись, ви також можете визначити комбінацію клавіш для автоматичного повторного відступу коду (YMMV), вставивши наступне в Sublime -> Preferences -> Key Binding - User:

[
  { "keys": ["ctrl+i"], "command": "reindent" }
]

і візуалізувати пробіл:

"indent_guide_options": ["draw_active"],
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,
"draw_white_space": "all",
"rulers": [120],

9

Я знайшов у своєму розумі більш просте рішення, ніж Магне:

На mac:

"cmd+f" => "  "(two spaces) => "alt+enter" => "arrow right" => "  "(two more spaces) => set tab width to 4(this can be done before or after.

На вікнах або інших платформах міняйте, cmd+fі alt+enterнезалежно від ваших findі select allгарячих клавіш.

Примітка. Цей метод схильний до "помилок", якщо у коді є більше місця. Таким чином, він менш безпечний, ніж метод Магне, але він швидший (принаймні для мене).


Я не міг змусити це працювати як таке, але я застосував принцип і просто знайшов та замінив (cmd-option-F на Mac) і замінив "" (4 пробіли) на "" (2 пробіли). І це спрацювало!
evanbikes

Зараз я знайшов інший спосіб зробити це, але це специфічно для мови. Якщо у вас є плагін для форматування, як RubyFormatтоді, ви можете просто встановити потрібний розмір вкладки, а потім виконати переформатування коду. У випадку RubyFormatце було б cmd+shift+R.
Automatico

7

Хоча багато пропозицій працюють при перетворенні 2 -> 4 простору. Я зіткнувся з деякими проблемами при перетворенні 4 -> 2.

Ось що я в кінцевому підсумку використав:

Sublime Text 3/Packages/User/to-2.sublime-macro

[
  { "args": null, "command": "select_all" },
  { "args": { "set_translate_tabs": true }, "command": "unexpand_tabs" },
  { "args": { "setting": "tab_size", "value": 1 }, "command": "set_setting" },
  { "args": { "set_translate_tabs": true }, "command": "expand_tabs" },
  { "args": { "setting": "tab_size", "value": 2 }, "command": "set_setting" }
]

5

Якщо ви знайдете пошук і заміну швидше у використанні, ви можете скористатися заміною регулярного вираження так:

Знайдіть (регулярний вираз): (^|\G) {2}(Замість "{2}" <space>{2} ви можете просто написати два пробіли. Використовуйте це тут для наочності.)

Замініть 4 місця або все, що завгодно, як вам подобається \t.


5

Я написав плагін для нього. Ви можете знайти його тут або шукати "ReIndent" в управлінні пакетом. Це здебільшого робить те саме, що писав Кайл Фінлі, але зручним способом із комбінацією клавіш для перетворення між 2 і 4 та навпаки.


2

Ви повинні додати цей код до власних прив'язок ключів:

{ "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} }

натиснувши ctrl + f12, він переспряме ваш файл на розмір вкладки 4. Якщо ви хочете іншого розміру вкладки, ви просто зміните число "значення". Формат простий json.


Мені подобається спасибі! Я додав 2 і 4 так:{ "keys": ["ctrl+f10"], "command": "set_setting", "args": {"setting": "translate_tabs_to_spaces", "value": 2} }, { "keys": ["ctrl+f11"], "command": "set_setting", "args": {"setting": "tab_size", "value": 2} }, { "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} },
JREAM

0

Найпростіше, що я зробив,

змінив мій відступ на вкладки

і це вирішило мою проблему.

Ви можете зробити те ж саме,

до просторів

а також відповідно до ваших потреб.

Згаданий знімок того ж.

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


Так, але питання задайте ситуацію, коли ви починаєте і закінчуєте відступ як пробіли.
Магне

0

Нещодавно я зіткнувся з подібною проблемою. Я використовував піднесений редактор. це не проблема з кодом, а з редактором.

Нижче зміни в налаштуваннях налаштувань працювали для мене.

Меню піднесеного тексту -> Налаштування -> Налаштування: Специфічний для синтаксису :

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