Проблемы с открытием файлов plist в текстовом редакторе

20

Из Finder я могу просмотреть файл plist без каких-либо затруднений. Например, используя Quick Look с ~/Library/Preferences/com.apple.Safari.RSS.plistя получаю хороший предварительный просмотр его содержимого:

Беглый взгляд

Однако если я попытаюсь открыть файл с помощью TextEdit или любого другого редактора (я уже пробовал SublimeText, TextMate, Vim, Nano и Coda 2), кодировка будет отключена:

bplist00Ò_"FixedRefreshesInBackgroundSettings_(com.apple.PreferenceSync.ExcludeSyncKeys ¡ 2]^����������������������������`

Вот как это выглядит, если я открою его с помощью TextEdit:

TextEdit

Я пытался изменить кодировку в Sublime Text и других приложениях, но это не помогает.

Есть предположения?

Я бегу 10.8.4.

АРС
источник

Ответы:

23

Файлы plist не обязательно представляют собой простой текст, поэтому их необходимо запускать через конвертер. Finder и Xcode (который имеет редактор списков) делают это, не сказав пользователю

Двоичный формат задокументирован в этом C-коде, поэтому любое приложение может преобразовать его, и кто-то написал описание формата на английском языке и дополнительную документацию Apple здесь, но обратите внимание, что он ссылается на старые пути в/Developer/Documentation

Программа командной строки plutil может конвертировать в и из XML

например, чтобы просмотреть список двоичных свойств в формате XML на stdout:

plutil -convert xml1 -o - <file name>

Также преобразовать двоичный файл в XML-лист на месте и затем оставить его так, чтобы программа пользователя могла читать либо.

plutil -convert xml1 <file name>
user151019
источник
Благодарю. Понимаю. Поэтому, если мне нужно отредактировать его, мне нужно преобразовать его в XML, открыть его в редакторе, а затем преобразовать обратно. Я предполагаю, что это так. Не нужно отвечать, если я не ошибаюсь!
APC
3
Вы также можете использовать plutil -convert xml1 ~/Library/Preferences/com.apple.Safari.RSS.plistдля преобразования plist в XML на месте. И после того, как вы отредактируете список, вам не нужно преобразовывать его обратно в двоичный файл.
Lri
1
> Finder и Xcode (у которого есть редактор списков) делают это, не сказав пользователю. Если быть точным, то это не Finder, а QuickLook в виде плагина QuickLook.
saagarjha
Вы также можете использовать более новую defaults read <file>команду, чтобы получить вид JSON своего рода.
Дламблин
5

Вы также можете редактировать файлы plist с помощью PlistBuddy , программы командной строки.

PlistBuddy находится по адресу /usr/libexec/PlistBuddy.

LHF
источник
1
Apple удалила эту страницу, и я не могу найти архив. Руководство по-прежнему доступно на MacOS Mojave, хотя.
Франклин Ю
@FranklinYu, действительно. Есть также учебник на marcosantadev.com/manage-plist-files-plistbuddy .
18:00
2

Поскольку вы упомянули Sublime Text, теперь есть плагин, который вы можете использовать, который автоматически выполняет преобразование для вас:

https://packagecontrol.io/packages/BinaryPlist

JeremyTM
источник
0

Я сделал файл CMD (Batch), чтобы помочь людям с преобразованием plist файлов в Windows:
Инструкции:
1. Скопируйте весь код
2. Создайте новый текстовый документ
3. Вставьте код
4. Сохраните файл
5. Переименуйте файл с помощью ".bat" вместо ".txt"
6.Откройте его

    @echo off
    title PLIST Converter ~SyndiShanX
    mode 1000
    color 0b

    ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Separation-Bar~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :filedirectory
    cls
    echo Either: Type the Directory of the File: (Ex. C:\Users\(UserName)\Desktop\File.plist) or Drag and Drop File onto This Window
    echo Made by: [SyndiShanX]
    echo File Directory:
    set /p directory=
    cls

    ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Separation-Bar~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :convertfile
    start "" "C:\Program Files\Common Files\Apple\Apple Application Support\plutil.exe" -convert xml1 %directory%
    goto complete

    ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Separation-Bar~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :complete
    title File Conversion Complete!
    color 0a
    echo File Conversion Complete!
    pause
    cls
    goto exit

    ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Separation-Bar~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :exit
    color 0c
    title Exiting...
    echo Exiting...
    pause
    cls
    exit

Или вы можете использовать версию, которая не закрывается после преобразования, чтобы разрешить несколько преобразований без повторного открытия файла:

    @echo off
    title PLIST Converter ~SyndiShanX
    mode 1000
    color 0b

    ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Separation-Bar~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :filedirectory
    cls
    echo Either: Type the Directory of the File: (Ex. C:\Users\(UserName)\Desktop\File.plist) or Drag and Drop File onto This Window
    echo Made by: [SyndiShanX]
    echo File Directory:
    set /p directory=
    cls

    ::~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Separation-Bar~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :convertfile
    start "" "C:\Program Files\Common Files\Apple\Apple Application Support\plutil.exe" -convert xml1 %directory%
    goto filedirectory
SyndiShanX
источник
1
Привет, и добро пожаловать, чтобы спросить другого! Этот ответ может быть более полезным в другом месте - ОП не интересуется использованием Windows.
шотландец
-1

Вы можете преобразовать файл списка свойств из двоичного формата в XML, используя следующую командную строку:

plutil -convert xml1 -o file.plist file.plist

Затем отредактируйте его как обычно. Во-вторых, вам не нужно конвертировать его обратно, так как обычно приложения распознают оба формата.

kenorb
источник