Обрезать конечные пробелы в Xcode

Есть ли способ заставить Xcode обрезать конечные пробелы при сохранении файла?

Я использую версию 3.1.3, если это имеет значение.

9 ответов

Решение

Вы можете создать скрипт и привязать его к сочетанию клавиш:

  • Выберите " Меню сценариев"> "Редактировать сценарии пользователя"...
  • Нажмите кнопку + и выберите New Shell Script
  • Дайте ему имя, например, "Strip Trailing Spaces", и назовите его как ⌃⇧R.
  • Установите Input для "Selection" и для Output "Replace Selection"

Затем введите следующий скрипт:

#!/usr/bin/perl

while (<>) {
    s/\s+$//;
    print "$_\n";
}

Начиная с Xcode 4.4, пробелы будут автоматически обрезаться по умолчанию, если только строка не является пробелом. Вы также можете активировать Including whitespace-only lines чтобы исправить это, который не активен по умолчанию.

Идти к Xcode > Preferences > Text Editing > While editing

Скриншот настроек XCode

Я использую плагин Google Toolbox для Mac Xcode, он добавляет параметр "Правильный пробел при сохранении", который сокращает конечный пробел при сохранении. Я очень скучал по emacs.

Я использую новый Automatically trim trailing whitespace -> Including whitespace-only linesкак было предложено @MartinStolz, хорошо работает при редактировании, но иногда мне нужно сделать Cmd+ a-> Ctrl+ iи сохранить файл несколько раз с файлом в фокусе, когда я не редактирую.

Если вы хотите очистить весь проект (кроме .md файлов) без использования скриптов, вы также можете Find & Replace -> Regular Expression. Поскольку этот метод удаляет конечные пробелы и вкладки для документации / комментариев, вы также можете попробовать отрицательный просмотр символов в черном списке, чтобы отфильтровать однострочные комментарии.

Найти все конечные пробелы:

      [\t ]+$

Найдите завершающие пробелы, не касаясь однострочных комментариев:

      ^(?!.*\\\\)[\t ]+$

Заменять:

      <nothing>

Таким образом, линтинг можно производить и без swiftlint autocorrect или аналогичные сторонние решения.

Для Xcode 8 я установил подключаемый модуль Xcode swimat для форматирования кода Swift, который удалял все конечные пробелы и строки только для пробелов.

Методы установки

  1. Установить через homebrew-cask:

    brew cask install swimat
    
  2. Загрузите приложение напрямую:
    https://github.com/Jintin/Swimat/releases/download/v1.3.5/Swimat.zip

  3. клон extension филиал и архив в Mac App.

использование

После установки вы можете запустить Swimat в Xcode через Editor -> Swimat -> Format,

Это невозможно в Xcode 3.2

Редактировать:

Я так кратко ответил на этот вопрос, потому что нет способа сделать это правильно.

Конечно, поскольку это программное обеспечение, вы можете делать все, что угодно: начиная с хаков Input Manager или других способов внедрения кода в перехват всей системы, вы можете в любой момент изменить свою локальную систему. Вы можете настроить действие папки Applescript (arrgh) или использовать демон запуска и средство FSEvents для просмотра файлов с исходным кодом.

Вы также можете добавить пару сценариев в XCode (пользовательские сценарии в меню, этапы сценариев в целевых объектах, настраиваемые действия в органайзере, даже очень неизвестная возможность запуска сценария), но все эти решения имеют недостатки, поскольку в них задействованы пользовательские или пользовательские настройки на компьютере пользователя.

Я не знаю о решении, которое просто работает после проверки проекта из SCM. Я считаю, что есть необходимость в этом и подобных сценариях настройки, поэтому я подал ошибку (радар 7203835, "Особенность: больше пользовательских сценариев запускается в рабочем процессе XCode"). Я еще не получил ни одного отзыва.

Вот полный текст записи радара:

Было бы полезно иметь больше мест для запуска скриптов в XCode.

Примеры:

  1. Предварительные сценарии сборки
    Сценарии предварительной сборки можно использовать для создания необходимых компонентов, таких как *.xcconfig files или config.h headers. Это невозможно с помощью "Выполнить этапы сборки сценария", так как отслеживание зависимостей происходит до того, как будет запущен какой-либо этап построения.

  2. Опубликовать сценарии сборки
    Аналогично вышеописанному, но выполняется после завершения сборки (включая подписывание кода и т. Д.). Полезно для дополнительной упаковки, проверки действительности и т. Д.

  3. Сценарии фиксации до / после SCM.
    Проверить целостность проекта.

  4. Pre / Post Файл Сохранить скрипт.
    Чтобы проверить / изменить файл перед сохранением. Например, запустить Коди украшений

  5. Пользовательские действия проекта.
    Мне известно о способности организатора определять произвольные действия. Но это функция для каждого пользователя (не является частью проекта). Я хотел бы определить такие действия, как сборка или очистка, которые отображаются в меню сборки и являются частью проекта.

Смотрите здесь для Xcode4: http://www.wezm.net/technical/2011/08/strip-trailing-whitespace-xcode-4/

Круто, Google Toolbox для Mac теперь добавляет опцию "обрезать пробелы" для Xcode4.

http://code.google.com/p/google-toolbox-for-mac/downloads/list

Спасибо тебе, Google!

Лучший и простой способ без использования скриптов, хаков и многого другого. Просто перейдите в раздел "Найти и заменить". Лучший и простой способ без использования скриптов, хаков и многого другого. Просто перейдите в "Найти и заменить" и нажмите "alt/option + space", затем нажмите кнопку "space" на панели замены, а затем нажмите "Заменить все". Он заменит пробелы обычными пробелами, и предупреждение / ошибка исчезнет!!

Один из способов, не идеальный, но работающий, — использовать функцию «Найти и заменить». Найдите двойной пробел и ничем не замените. И после этого Command+A и Control+I.

Как я уже сказал, не идеально, возможно, вам нужно что-то исправить, но для меня сработало.

Другие вопросы по тегам