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

105

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

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

Александр Гладыш
источник

Ответы:

22

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

  • Выберите Меню сценариев> Изменить пользовательские сценарии ...
  • Нажмите кнопку + и выберите New Shell Script.
  • Дайте ему имя, например «Убрать конечные пробелы», и дайте ему ярлык, например R.
  • Установите для ввода значение «Выбор» и для вывода значение «Заменить выделение».

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

#!/usr/bin/perl

while (<>) {
    s/\s+$//;
    print "$_\n";
}
Даррен
источник
9
Ах да, так просто ... Спасибо. Есть ли способ связать это с сохранением файла?
Александр Гладыш
Чтобы работать со всем файлом (что, вероятно, вы и захотите сделать), установите для параметра «Ввод» значение «Весь документ», а для параметра «Вывод» - «Заменить содержимое документа». Однако при этом курсор остается внизу файла.
SMBiggs
8
Этот ответ устарел с Xcode 4.4. См. Ответ Мартина Штольца.
Basil Bourque
242

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

Перейти к Xcode > Preferences > Text Editing > While editing

Снимок экрана настроек Xcode

Мартин Штольц
источник
15
Этот параметр обрезает пробелы в конце строки только после того, как курсор покинет эту строку. Таким образом, он по-прежнему позволяет вам сохранять файл с одной строкой завершающего пробела, если курсор находится на этой строке при сохранении.
ma11hew28
7
Почему это не по умолчанию? Если у вас есть существующий файл с завершающим пробелом, просто отметьте все, вырежьте, сохраните, вставьте, сохраните.
Friederbluemle 05
Это должно переопределить решение взломанного сценария в этом ответе.
Urda
7
Использование этого + ctrl-iво всех существующих файлах позаботится о конечных
пробелах
24

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

Максим
источник
1
Я тоже использую этот плагин. Он делает то, что говорит.
Натан
Было бы идеально, к сожалению, на данный момент он не работает на Xcode 4 :(
deepwell
6
Теперь у нас есть базовая поддержка Xcode 4. Смотрите наш новый плагин
dmaclach
1
Где найти параметр «Исправлять пробелы при сохранении»?
jhasse
Мне наконец удалось заставить GTM работать с Xcode 4.3.2, но инструкции по установке из вики GTM оказались недействительными. Вместо помещения .xcplugin ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins(согласно инструкциям Google) мне пришлось вставить его /Applications/Xcode.app/Contents/PlugInsи перезапустить Xcode.
Кристофер Сомместад
3

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

Способы установки

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

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

  3. Клонировать extensionветку и архивировать в приложение Mac.

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

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

муллаза
источник
этот инструмент не удаляет пустые строки.
Mehdico 02
1

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

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

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

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

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

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

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

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

Примеры:

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

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

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

  4. Скрипт до / после сохранения файла.
    Чтобы проверить / изменить файл перед сохранением. Например, беги cody beautifiers

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

Николай Рухе
источник
Отредактировано, чтобы ответить, почему обходные пути неудовлетворительны в этом случае
Николай Рухе
2
Спасибо. Хотя я за то, чтобы делать это правильно, я бы согласился на любой не слишком навязчивый взлом. Эти лишние пробелы действительно раздражают.
Александр Гладыш
0

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

H2zee
источник
1
Удаляет ли это только конечные пробелы, как указано в вопросе?
Blastfurnace