¿Cómo embellecer los archivos de dictados binarios?

He abierto /System/Library/Frameworks/AppKit.framework/Resources/StandardKeyBinding.dicten vim, y parece un galimatías. ¿Hay alguna manera de convertirlo en legible por humanos solo para ver lo que contiene?

Respuestas (4)

Si tienes Plutil instalado

Puede ejecutar este Applescript que creará una versión de texto del diccionario para que lo lea.

   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

O

Hay una vieja pista sobre macosxhints - 10.4: Editar archivos plist binarios (y normales) con vim

La publicación también tiene el enlace al script vim que hace todo esto.

Que puede hacer lo que quieras. (no use vim yo mismo)

Cita de la publicación (pero vaya y léala, ya que hay comentarios y notas que necesitará:

¿Qué hace? Lee un archivo plist, verifica y memoriza si es binario, lo convierte a texto sin formato si es necesario y activa el resaltado de sintaxis para XML. Cuando guarda el archivo nuevamente, se convierte nuevamente a binario para escribir si era binario al principio. Si el archivo no era binario o si la conversión a binario falla (lo que puede suceder si tiene errores de sintaxis en su archivo), el archivo se almacena en formato de texto. Si un plist originalmente binario se guarda como texto sin formato debido a errores de sintaxis y corrige los errores y guarda el archivo nuevamente, se escribe en formato binario. Si abre un archivo binario y simplemente lo ve sin hacer ningún cambio, aún puede salir de vim usando el :q normal (¡no es necesario :q!) y el archivo se deja intacto (todavía en formato binario). Todo esto debería funcionar incluso cuando se trabaja con varios búferes (archivos),


Copie el archivo a algún otro directorio. Mover a ese directorio y ejecutar

plutil -convert xml1 StandardKeyBinding.dict

en terminales (Puede convertirlo a jsonformato reemplazándolo xml1con json). Luego ejecute

cat -v StandardKeyBinding.dict

y puede ver el archivo de una manera legible ahora, como a continuación.

<?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>

Consejos: Ejecutar man catpara ver lo que cat -vhace.

Aquí está el método para hacer que StandardKeyBinding.dictel archivo sea legible correctamente:

plutil -convert xml1 StandardKeyBinding.dict

No sirve para volver a convertirlo.

¿Quiere decir que no es necesario volver a convertirlo?

Prueba también

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