Используйте Vim для редактирования файла Applescript

Используйте Vim для редактирования файла Applescript

Можно ли использовать Vim для работы с файлами applescript вместо программы Automator или Script Editor по умолчанию? Я искал в сети и не смог найти тот же вопрос или ответ нигде. Я нашел файл в Library > Services, но, похоже, он в формате, с которым будет довольно сложно работать в Vim.

По сути, я хотел бы управлять имеющимся у меня applescript, как и любым другим кодом, который я делаю, размещая его в общем репозитории, используя Vim для редактирования, управления им как частью моего рабочего процесса git и запуска файла из выбранного мной расположения. Я все еще изучаю эти другие части, но мне интересно, делал ли кто-нибудь что-то подобное?

Кажется, я не могу вставить пример, но по сути лог «hello», который я ввожу в файл редактора скриптов, становится нечитаемым при открытии в Vim.

решение1

Происходит следующее: Script Editor сохраняет скрипты в скомпилированном формате по умолчанию (обратите внимание на расширение «.scpt»), которое, как вы обнаружили, нечитабельно для человека. Чтобы сохранить их как обычный текст, измените всплывающее окно «Формат файла» на Текст при сохранении — расширение должно измениться на «.applescript».

Учитывая другие требования, которые вы упомянули, лучше всего, вероятно, оставить их в виде обычного текста — большинство программ, запускающих скрипты, могут одинаково хорошо работать с файлами «.scpt» и «.applescript».

Если по какой-то причине вы хотите/нужно иметь файл в скомпилированном виде, то все равно можно редактировать его в vim, типа того. Вам нужно добавить несколько автокоманд для декомпиляции скрипта при его открытии и перекомпиляции при сохранении. Должно быть похоже на то, что описаноздесь, за исключением того, что команды будут (я думаю) %!osadecompile %и %!osacompile -o %.

Фильтры git «clean» и «smudge» реализуют схожую технику: файл сохраняется в репозитории как текст, поэтому его можно последовательно сравнить, но файл в вашем рабочем дереве представляет собой скомпилированную двоичную форму.

Связанный контент