Como criar uma substituição de texto na linha de comando em vez do texto de teclado das Preferências do Sistema

0

Existe alguma maneira de criar substituições de texto na linha de comando em vez de System Preferences > Keyboard > Text ?

Eu vejo que quando você exporta substituições de texto, ele cria um arquivo html, então não tenho certeza se você precisa criar um arquivo html similar para importá-las.

A razão para isso é que eu tenho muitas teclas de atalho que foram criadas no Windows e gostaria de recriá-las em um Mac. Eu odiaria ter que criar cada um deles na GUI. Eu queria saber se havia uma alternativa de linha de comando como um Mac é um sistema operacional com sabor Unix.

    
por user918753 29.06.2018 / 03:29

1 resposta

0

Embora você quisesse uma solução de linha de comando para o seu problema, o AppleScript é de longe a melhor escolha neste caso, pois a geração de novos dados plist é muito mais simples.

Meu script abaixo terá o conteúdo de um arquivo de texto CSV especificado que contém as substituições de texto antigas do Windows e o usa para gerar um arquivo .plist que você pode importar diretamente para Preferências do Sistema arrastar e soltar.

Para executar o script, você precisará abrir o Editor de scripts e definir os seguintes pequenos ajustes para atender às suas opções específicas:

  • Altere o valor da propriedade csvf (linha 1) para o caminho no qual o arquivo CSV pode ser localizado. Eu tinha o meu no Desktop e era chamado substitutions.txt ;
  • Se você realmente se sentir bem com relação a isso, poderá alterar o valor da propriedade plistf (linha 2) para um novo caminho. No entanto, este arquivo é temporário, e você estará destruindo-o mais tarde, quando terminar;
  • Por último, altere a propriedade text item delimiters para o caractere que atua como um separador de campo para seus dados CSV. No momento, eu o defino como | e meu arquivo CSV de amostra ficou assim:
    ABCDEFG|äbçdêfg
    1234567|0000000
    
    , que corresponde a duas substituições de texto, a primeira delas mapeia ABCDEFG para equivalentes internacionais minúsculos e a segunda mapeia 1234567 para sete zeros.

O script tem vários comentários para descrever o que cada parte faz. Mas também é muito curto e não precisa de muita atenção. Após a execução, o arquivo substitutions.plist deve aparecer em sua área de trabalho. Abra Preferências do Sistema > Teclado > Texto e arraste o arquivo .plist para a lista grande para importá-los imediatamente.

    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
    
por 30.06.2018 / 11:55