Несмотря на то, что вы хотели решить проблему из командной строки, AppleScript - лучший выбор в этом случае, так как генерировать новые plist-данные намного проще.
Мой скрипт ниже возьмет содержимое указанного текстового файла CSV, который содержит ваши старые текстовые замены Windows, и использует его для создания .plist
файла, который вы можете импортировать непосредственно в Системные настройки с помощью перетаскивания.
Чтобы запустить скрипт, вам нужно открыть Script Editor и внести следующие незначительные изменения в соответствии с вашими конкретными настройками:
- Измените значение свойства
csvf
(строка 1), указав путь к вашему CSV-файлу. У меня был мой на рабочем столе, и он был названsubstitutions.txt
; - Если вы действительно сильно к этому относитесь, вы можете изменить значение свойства
plistf
(строка 2) на новый путь. Однако этот файл является временным, и вы его уничтожите позже, когда закончите; - Наконец, измените свойство
text item delimiters
на символ, который действует как разделитель полей для ваших данных CSV. В настоящее время я установил его на|
, и мой образец CSV-файла выглядел так:АБВГДЕЖ | АБВГДЕЖ 1234567 | 0000000
что соответствует двум текстовым подстановкам, первая из которыхABCDEFG
соответствует международным строчным эквивалентам, а вторая1234567
- семи нулям.
Скрипт содержит множество комментариев, чтобы описать, что делает каждая часть. Но это также очень коротко и не потребует слишком много внимания. После его запуска файл substitutions.plist
должен появиться на рабочем столе. Откройте Системные настройки> Клавиатура> Текст и перетащите .plist
файл в большой список, чтобы сразу импортировать его.
property csvf : "~/Desktop/substitutions.txt" -- CSV file containing substitions to import property plistf : "~/Desktop/substitutions.plist" -- Plist file to which data is outputted property text item delimiters : "|" -- The CSV field separator used in the csvf file property ReplacementItem : global ReplacementItems on run set ReplacementItems to {} -- a list to store text replacement record data -- Read CSV values from text file and use -- them to create new text replacement items readFromCSVFile at csvf -- Create plist file tell application "System Events" to set the value ¬ of (make new property list file ¬ with properties ) ¬ to the ReplacementItems end run -- This handler receives arguments A and B, and creates -- a new text replacement record that will be used to -- map (substitute) text A to text B. on textReplacementToMap from A as text to B as text local A, B tell the ReplacementItem set its shortcut to A set its phrase to B end tell copy the ReplacementItem to the end of the ReplacementItems end textReplacementToMap -- This handler receives a file path to a CSV file -- that contains a CSV-formatted list of text -- substitutions that will be read and used to create -- the new text replacement mappings to readFromCSVFile at f as text local f tell application "System Events" if not (file f exists) then return set POSIXfile to the POSIX path of file f end tell read the POSIXfile as «class utf8» repeat with CSVitem in paragraphs of result try set [A, B] to CSVitem's text items textReplacementToMap from A to B end try end repeat end readFromCSVFile