Обрезать конечные пробелы в 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
Я использую плагин 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, который удалял все конечные пробелы и строки только для пробелов.
Методы установки
Установить через homebrew-cask:
brew cask install swimat
Загрузите приложение напрямую:
https://github.com/Jintin/Swimat/releases/download/v1.3.5/Swimat.zipклон
extension
филиал и архив в Mac App.
использование
После установки вы можете запустить Swimat в Xcode через Editor -> Swimat -> Format
,
Это невозможно в Xcode 3.2
Редактировать:
Я так кратко ответил на этот вопрос, потому что нет способа сделать это правильно.
Конечно, поскольку это программное обеспечение, вы можете делать все, что угодно: начиная с хаков Input Manager или других способов внедрения кода в перехват всей системы, вы можете в любой момент изменить свою локальную систему. Вы можете настроить действие папки Applescript (arrgh) или использовать демон запуска и средство FSEvents для просмотра файлов с исходным кодом.
Вы также можете добавить пару сценариев в XCode (пользовательские сценарии в меню, этапы сценариев в целевых объектах, настраиваемые действия в органайзере, даже очень неизвестная возможность запуска сценария), но все эти решения имеют недостатки, поскольку в них задействованы пользовательские или пользовательские настройки на компьютере пользователя.
Я не знаю о решении, которое просто работает после проверки проекта из SCM. Я считаю, что есть необходимость в этом и подобных сценариях настройки, поэтому я подал ошибку (радар 7203835, "Особенность: больше пользовательских сценариев запускается в рабочем процессе XCode"). Я еще не получил ни одного отзыва.
Вот полный текст записи радара:
Было бы полезно иметь больше мест для запуска скриптов в XCode.
Примеры:
Предварительные сценарии сборки
Сценарии предварительной сборки можно использовать для создания необходимых компонентов, таких как *.xcconfig files или config.h headers. Это невозможно с помощью "Выполнить этапы сборки сценария", так как отслеживание зависимостей происходит до того, как будет запущен какой-либо этап построения.Опубликовать сценарии сборки
Аналогично вышеописанному, но выполняется после завершения сборки (включая подписывание кода и т. Д.). Полезно для дополнительной упаковки, проверки действительности и т. Д.Сценарии фиксации до / после SCM.
Проверить целостность проекта.Pre / Post Файл Сохранить скрипт.
Чтобы проверить / изменить файл перед сохранением. Например, запустить Коди украшенийПользовательские действия проекта.
Мне известно о способности организатора определять произвольные действия. Но это функция для каждого пользователя (не является частью проекта). Я хотел бы определить такие действия, как сборка или очистка, которые отображаются в меню сборки и являются частью проекта.
Смотрите здесь для 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.
Как я уже сказал, не идеально, возможно, вам нужно что-то исправить, но для меня сработало.