Как украсить двоичные файлы dict?

Я открыл /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dictв vim, и это выглядит как тарабарщина. Есть ли способ преобразовать его в удобочитаемый для человека, чтобы увидеть, что он содержит?

Ответы (4)

Если у вас установлен plutil

Вы можете запустить этот Applescript, который создаст текстовую версию словаря для чтения.

   property copyScriptPath : "~/Documents/" (* path dir for text version*)

tell application "Finder"
    set selectFiles to (get selection) (* get the finder selection*)
end tell
repeat with i from 1 to number of items in selectFiles
    (* convert to POSIX path*)
    set this_item to quoted form of POSIX path of (item i of selectFiles as alias)


    (* get the file name , add it to an alias, then use plutil to read and write atext version out using the original name*)
    do shell script "name=`basename " & this_item & "`;/usr/bin/plutil -convert xml1  " & this_item & " -o  " & copyScriptPath & "\"$name\".txt"
end repeat

ИЛИ

На macosxhints есть старая подсказка — 10.4: редактируйте двоичные (и обычные) файлы plist с помощью vim

В посте также есть ссылка на скрипт vim , который все это делает.

Который может делать то, что вы хотите. (сам не использую vim)

Цитата из поста ( Но, пожалуйста, зайдите и прочитайте, так как там есть комментарии и примечания, которые вам понадобятся:

Что оно делает? Он читает файл plist, проверяет и запоминает, является ли он двоичным, при необходимости преобразует его в обычный текст и включает подсветку синтаксиса для XML. Когда вы снова сохраняете файл, он снова преобразуется в двоичный для записи, если он был двоичным в начале. Если файл не был двоичным или если преобразование в двоичный не удалось (что может произойти, если в файле есть синтаксические ошибки), файл сохраняется в текстовом формате. Если изначально двоичный plist сохраняется как обычный текст из-за синтаксических ошибок, и вы исправляете ошибки и сохраняете файл снова, он записывается в двоичном формате. Если вы открываете двоичный файл и просто просматриваете его без внесения каких-либо изменений, вы все равно можете выйти из vim, используя обычный :q (нет необходимости в :q!), и файл останется нетронутым (все еще в двоичном формате). Все это должно работать даже при работе с несколькими буферами (файлами),


Скопируйте файл в другой каталог. Перейдите в этот каталог и запустите

plutil -convert xml1 StandardKeyBinding.dict

в терминале. (Вы можете преобразовать его в jsonформат, заменив xml1на json.) Затем запустите

cat -v StandardKeyBinding.dict

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>^C</key>
    <string>insertNewline:</string>
    <key>^H</key>
    <string>deleteBackward:</string>
    <key>  </kev>
    <string>insertTab:</string>
    <key>
</key>
    <string>insertNewline:</string>
    <key>^M</key>
    <string>insertNewline:</string>
    <key>^Y</key>
    <string>insertBacktab:</string>
    <key>^[</key>
    <string>cancelOperation:</string>
    <key>$?M-^\M-^@</key>
    <string>moveUpAndModifySelection:</string>
    <key>$?M-^\M-^A</key>
    <string>moveDownAndModifySelection:</string>
    <key>$?M-^\M-^B</keV>
    <string>moveLeftAndModifySelection:</string>

Советы: Запустите man cat, чтобы увидеть, что cat -vделает.

Вот способ сделать StandardKeyBinding.dictфайл правильно читаемым:

plutil -convert xml1 StandardKeyBinding.dict

Бесполезно конвертировать обратно.

Вы имеете в виду, что не нужно конвертировать его обратно?

Попробуйте также

/usr/libexec/PlistBuddy -c print /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dict