Незважаючи на те, що ви хотіли вирішити проблему з командного рядка, AppleScript на сьогоднішній день є кращим вибором, оскільки генерувати нові пліст-дані набагато простіше.
Мій сценарій нижче буде містити вміст визначеного текстового файлу CSV, який містить старі текстові підстановки Windows, і використовує його для створення .plist
файлу, який ви можете імпортувати безпосередньо в системні налаштування за допомогою перетягування n-drop.
Щоб запустити сценарій, вам потрібно буде відкрити редактор сценаріїв і встановити наступні незначні коригування відповідно до ваших конкретних параметрів:
Сценарій має багато коментарів, щоб описати, що робить кожна частина. Але він також дуже короткий і йому не потрібно буде приділяти занадто багато уваги. Після запуску файл 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