Есть ли способ создать текстовые замены в командной строке вместо System Preferences > Keyboard > Text?

Я вижу, что когда вы экспортируете текстовые замены, он создает HTML-файл, поэтому я не уверен, нужно ли вам создавать аналогичный HTML-файл для их импорта.

Причина в том, что у меня есть много сочетаний клавиш, которые были созданы в Windows, и я хотел бы воссоздать их на Mac. Я бы не хотел создавать каждый из них в графическом интерфейсе. Мне было интересно, была ли альтернатива командной строки, так как Mac - это ОС со вкусом Unix.

1 ответ1

0

Несмотря на то, что вы хотели решить проблему из командной строки, AppleScript - лучший выбор в этом случае, так как генерировать новые plist-данные намного проще.

Мой скрипт ниже возьмет содержимое указанного текстового файла CSV, который содержит ваши старые текстовые замены Windows, и использует его для создания файла .plist который вы можете импортировать непосредственно в Системные настройки с помощью перетаскивания.

Чтобы запустить скрипт, вам нужно открыть Script Editor и внести следующие незначительные изменения в соответствии с вашими конкретными настройками:

  • Измените значение свойства csvf (строка 1) на путь, по которому может быть расположен ваш CSV-файл. У меня был мой на рабочем столе, и он назывался substitutions.txt ;
  • Если вы действительно сильно к этому относитесь, вы можете изменить значение свойства plistf (строка 2) на новый путь. Однако этот файл является временным, и вы его уничтожите позже, когда закончите;
  • Наконец, измените text item delimiters свойства на символ, который действует как разделитель полей для ваших данных CSV. В настоящее время я установил его на | и мой пример CSV-файла выглядел так:
    ABCDEFG | äbçdêfg 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 : {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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .