Несмотря на то, что вы хотели решить проблему из командной строки, AppleScript - лучший выбор в этом случае, так как генерировать новые plist-данные намного проще.
Мой скрипт ниже возьмет содержимое указанного текстового файла CSV, который содержит ваши старые текстовые замены Windows, и использует его для создания файла .plist
который вы можете импортировать непосредственно в Системные настройки с помощью перетаскивания.
Чтобы запустить скрипт, вам нужно открыть Script Editor и внести следующие незначительные изменения в соответствии с вашими конкретными настройками:
Скрипт содержит множество комментариев, чтобы описать, что делает каждая часть. Но это также очень коротко и не потребует слишком много внимания. После того , как запустить файл 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 : {phrase:missing value, shortcut:missing value}
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 {name:plistf}) ¬
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