Интеллект переформатировать при сохранении файла


353

Я помню, что в IntelliJ или Eclipse я видел настройки для переформатирования (очистки) файлов при их сохранении. Как мне его найти (не нашел в настройках)

Ответы:


236

Я предлагаю плагин сохранения действий . Он также поддерживает оптимизацию импорта и реорганизации кода.

Хорошо работает в сочетании с плагином eclipse formatter .

Найдите и активируйте плагин:

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

Настройте это:

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

Изменить: кажется, что последняя версия Intellij плагин сохранения действия запускается автоматическим сохранением Intellij. Это может быть довольно раздражающим, когда это ударяется, все еще редактируя.

Этот выпуск плагина github дает подсказку о некоторых возможных решениях:

https://github.com/dubreuia/intellij-plugin-save-actions/issues/63

Я на самом деле пытался присвоить Ctrl+ переформатирование, Sи оно работало нормально - сохранение теперь выполняется автоматически.


Я использовал это, но после обновления до Android Studio 1.5.1 я больше не могу его найти.
r1k0

1
Плагин был (на данный момент) в последний раз обновлен 10.02.2016 и говорит, что Compatibility This plugin works with Java 6+ and Intellij IDEA Community Edition after 131 (around version 13).я не знаю, на какой версии IntelliJ Android Studio основана. Вы можете это проверить?
Бенджамин Питер

К вершине вы идете!
Ник Грейли

Почти работал на меня. К сожалению, «код переформатирования» делает только подмножество того, что делает «Код> код переформатирования» (по крайней мере, для кода Scala). Это почему?
Тило

Пробовал это, но IntelliJ экономит далеко часто. Организация импорта выскакивает каждые 2-3 нажатия клавиш.
Эшли

443

Это решение работало лучше для меня:

  1. Сделать макрос (я использовал Упорядочить импорт, Форматировать код, Сохранить все)
  2. Назначьте это нажатием клавиши (я переопределил Ctrl+ S)

Примечание. При первом организованном импорте вам придется сначала поставить флажок «Больше не показывать это сообщение», но после этого он будет работать, как и ожидалось.

Пошаговая инструкция для IntelliJ 10.0:

  1. Код -> «Оптимизировать импорт ...», если появляется диалоговое окно, установите флажок «Больше не показывать это сообщение», затем нажмите «Выполнить».
  2. Сервис -> «Начать запись макроса»
  3. Код -> «Оптимизировать импорт ...»
  4. Код -> «Переформатировать код ...»
  5. Файл -> «Сохранить все»
  6. Сервис -> «Остановить запись макроса»
  7. Назовите макрос (что-то вроде «отформатированное сохранение»)
  8. В File -> Settings -> Keymap выберите свой макрос, расположенный в «Main Menu -> Tools ->« formatted save »
  9. Нажмите «Добавить сочетание клавиш», затем нажмите клавишу, которую вы хотите. Если вы выберете Ctrl+, Sкак я, он спросит вас, что делать с предыдущим ярлыком Ctrl+ S. Убери это. Вы всегда можете переназначить его позже, если хотите.
  10. Наслаждайтесь!

Для IntelliJ 11 замените

шаг 2. с помощью: Правка -> Макросы -> «Начать запись макросов»
шаг 6. с помощью: Правка -> Макросы -> «Остановить запись макросов»

Все остальное остается прежним.

IntelliJ 12

8. Настройки содержат настройки Keymap. Используйте поле ввода для фильтрации содержимого, как показано на скриншоте.

Intellij / Настройки / Карта клавиш / Макросы


4
В IntelliJ 11: 1: Начать запись макроса: Правка -> Макросы -> Начать запись макроса. 2: следуйте инструкциям выше. 3: Остановить запись макроса: Редактировать -> Макросы -> Остановить запись макроса. В таблице ключей макрос сохраняется в папке «Макросы», а не в главном меню -> папка «Инструменты».
Маркус К

3
Если вы довольны тем, как переформатируется код, тогда этот подход работает намного лучше, если вы решите переформатировать весь код в проекте и сохранить все. В противном случае, когда вы делаете многофайловое редактирование, только активное переформатируется перед сохранением всех модифицированных.
Дрю Ноакс

86

Ниже обновленный ответ Нейла.

IntelliJ 13 шагов:

  1. Код -> Переформатировать код введите описание изображения здесь
  2. Правка -> Макросы -> Начать запись макросов
  3. Код -> Переформатировать код
  4. Файл -> Сохранить все
  5. Правка -> Макросы -> Остановить запись макроса
  6. Назовите макрос (что-то вроде «отформатированное сохранение»)
  7. Файл -> Настройки -> Карта ключей
  8. Щелкните правой кнопкой мыши по макросу. Добавить сочетание клавиш. Установите сочетание клавиш Control + S. введите описание изображения здесь
  9. IntelliJ сообщит вам о конфликте горячих клавиш. Выберите «удалить», чтобы удалить другие назначения.

Но это удаляет действие «Сохранить». Постер увидел, что в Eclipse у нас есть возможность форматировать код и автоматически организовывать импорт при сохранении файла. Этот вариант (я полагаю) отсутствует в идее IntelliJ. Это обходной путь, который включает в себя привязку ключа сохранения к ключу переформатирования.
Ганеш Кришнан

3
Я не согласен, @GaneshKrishnan. Этот обходной путь не привязывает «ключ сохранения» к «ключу переформатирования». Он связывает его с макросом, который «переформатирует и сохраняет», и это именно то, что запрашивал OP и что реализовано в Eclipse, но запускается с помощью флажка.
дБмВт

1
Я думаю, что для шага 1 вы подразумеваете «Код -> Показать диалог переформатирования файлов», чтобы установить значения по умолчанию для Диалога переформатирования файлов (чтобы они были правильно установлены для шага 3 - Код переформатирования)?
Studgeek

61

Я установил автоматическую очистку при регистрации, что обычно достаточно для меня. Если что-то слишком уродливо, я просто нажму на ярлык ( Ctrl- Alt- L, Return). И я вижу, что у них есть опция для автоматического форматирования вставленного кода, хотя я никогда не использовал это.


12
Вы также можете использовать Ctrl-Shift-F для форматирования. Это работает намного лучше для меня, так как Ctrl-Alt-L - команда блокировки экрана в Ubuntu.
Джейсон МакВетта

22
Ctrl + Shift + F - Найти в Пути .
13

5
Как вы настраиваете что-то случиться при регистрации?
грабить

2
Работает ли это, если вы не регистрируетесь с помощью intelliJ, т.е. я думаю, что это не сработает, если вы регистрируетесь с помощью инструмента командной строки.

Как это отвечает на вопрос?
Бен

19

Ctrl+ Alt+ Lэто формат файла (включает два ниже)

Ctrl+ Alt+ Oоптимизировать импорт

Ctrl+ Alt+ Iисправит отступ на определенной строке

Я обычно запустить Ctrl+ Alt+ Lнесколько раз , прежде чем совершать свою работу. Я предпочел бы выполнить очистку / переформатирование по моей команде, а не автоматически.


Заменить Ctrl на Cmd для Mac
Джерард

12
Осторожнее в Linux, как Ctrl + Alt + Lобычно, Lock Session. Вам нужно переназначить одну из функций.
неделимый

18

Если у вас InteliJ Idea Community 2018.2, выполните следующие шаги:

  1. В верхнем меню вы нажимаете: «Правка»> «Макросы»> «Начать запись макросов» (в правом нижнем углу экрана вы увидите окно, подтверждающее, что макросы записываются)
  2. В верхнем меню вы нажимаете: «Код»> «Переформатировать код» (вы увидите выбранную опцию в правом нижнем углу)
  3. В верхнем меню вы нажимаете: «Код»> «Оптимизировать импорт» (вы увидите выбранную опцию в правом нижнем углу)
  4. В верхнем меню вы нажимаете: Файл> Сохранить все
  5. В верхнем меню вы нажимаете: Edit> Macros> Stop Macro Recording
  6. Вы называете макрос: «Форматировать код, Организовать импорт, Сохранить»
  7. В верхнем меню у вас часы: Файл> Настройки. В окнах настроек вы нажимаете Keymap
  8. В окне поиска справа вы ищете «сохранить». Вы найдете Сохранить все (Ctrl + S). Щелкните правой кнопкой мыши и выберите «Удалить Ctrl + S»
  9. Удалите текст поиска из поля, нажмите кнопку «Свернуть все» (вторая кнопка слева вверху)
  10. Перейдите к макросам, нажмите на стрелку, чтобы развернуть макросы, найдите сохраненный макрос и щелкните по нему правой кнопкой мыши. Выберите Добавить сочетание клавиш, нажмите Ctrl + S и все в порядке.

Перезапустите свою IDE и попробуйте.

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


13

Если вы разрабатываете во Flutter, с 01.05.2008 г. появилась новая экспериментальная опция, которая позволяет форматировать код при сохранении. настройки


9

Я завел привязку Reformat code...действия к Ctrl- S, заменив привязку по умолчанию для Save All.

Поначалу это может показаться сумасшедшим, но IntelliJ, похоже, экономит практически на каждом действии: запуск тестов, сборка проекта, даже при закрытии вкладки редактора. У меня есть привычка бить Ctrl- Sдовольно часто, так что на самом деле это работает довольно хорошо для меня. Это, конечно, легче набрать, чем связывание по умолчанию для переформатирования.


5

IntellIJ 14 && 15: Когда вы проверяете код в диалоге фиксации изменений, отметьте флажок «Переформатировать код», тогда IntelliJ переформатирует весь код, который вы проверяете.

Источник: www.udemy.com/intellij-idea-secrets-double-your-coding-speed-in-2-hours


2
Что я здесь
Тушар

4
Помните, что чрезмерное продвижение одного ресурса может быть интерпретировано сообществом как спам. Вы должны опубликовать хорошие, релевантные ответы, и если один или два упомянут об этом курсе, это хорошо - но если вы публикуете его в каждом ответе, он будет помечен и удален.
ArtOfCode

2

Я думал, что в IntelliJ было что-то подобное, но я не могу его найти. Единственная очистка, которая происходит при сохранении, - это удаление пробелов на концах строк. Я думал, что должен был указать это поведение в какой-то момент, но я не вижу ничего связанного на этом этапе.


2

Если речь идет о Преттиере, просто используйте File Watcher:

reference => Tools => File Watchers => нажмите +, чтобы добавить нового наблюдателя => Prettier

https://prettier.io/docs/en/webstorm.html#running-prettier-on-save-using-file-watcher


2
Prettier - это здорово, но он не работает для языков / форматов за пределами сети. Он будет форматировать js, ts, css, json и т. Д., Но бесполезен для C, C #, Java, Python и т. Д., За исключением некоторых ранних попыток создания плагинов.
Маттиа

0

Начиная с версии 2020.1, вы можете активировать Запуск при сохранении для файлов непосредственно в настройках плагина Prettier :

Настройки для плагина Prettier

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.