Вы можете редактировать ~/Library/Preferences/com.apple.LaunchServices.plistв текстовом редакторе после преобразования его в XML:
plutil -convert xml1 ~/Library/Preferences/com.apple.LaunchServices.plist
Затем добавьте такие записи в LSHandlersмассив:
<dict>
<key>LSHandlerContentType</key>
<string>com.adobe.pdf</string>
<key>LSHandlerRoleAll</key>
<string>net.sourceforge.skim-app.skim</string>
</dict>
<dict>
<key>LSHandlerContentTag</key>
<string>mkv</string>
<key>LSHandlerContentTagClass</key>
<string>public.filename-extension</string>
<key>LSHandlerRoleAll</key>
<string>org.videolan.vlc</string>
</dict>
Вы можете использовать mdlsдля просмотра UTI типов файлов и что-то вроде osascript -e 'id of app "AppName"'просмотра идентификаторов пакетов приложений.
Вы можете применить изменения com.apple.LaunchServices.plist, перезапустив. Выйти и вернуться недостаточно.
ПРИМЕЧАНИЕ : dutiбольше не находится в активной разработке и был помечен сопровождающими как «неподдерживаемый». С 2012 года в проекте не наблюдалось значительного прогресса, кроме обновлений конфигурации. Он переместился из Sourceforge в Github. Этот ответ был обновлен и теперь содержит новые ссылки.
Я также использую Duti, хотя. Я сохранил такой файл (около 100 строк) как ~/.duti:
org.gnu.Emacs public.plain-text all # .txt, .text, plain text files without an extension
org.gnu.Emacs public.unix-executable all # executable scripts
com.SequentialX.Sequential .jpg all
org.videolan.vlc .mkv all
У меня есть агент запуска, который запускается duti ~/.dutiавтоматически при ~/.dutiизменении.
Вы можете обычно использовать расширения имени файла (как .jpg) вместо UTI (как public.jpg), чтобы указать типы файлов. dutiпреобразует расширения в UTI, которые также применяются к другим расширениям (например .jpeg). Для некоторых расширений, таких как .mkvи .tex, UTI зависит от того, какое приложение зарегистрировало расширение первым.
Последняя версия из dutiтолько включает в себя исходный код, но 1.5.0 также включает в себя установку.
brew install dutiдля установкиduti