Редактировать текст в буфере обмена без потери стиля форматирования и непрерывно запускать скрипт - PullRequest
2 голосов
/ 24 марта 2011

Я использую этот AppleScript для редактирования данных буфера обмена. Но есть некоторые вещи, которые я не мог понять, как это сделать:

  1. Этот скрипт удаляет весь стиль форматирования текста в буфере обмена. Есть ли способ сохранить все форматы?

  2. Я пытался запустить этот скрипт как приложение (с сохранением открытого флажка при сохранении), но он просто работает один раз после нового запуска и не редактирует новый скопированный текст. Как я могу заставить этот скрипт работать непрерывно?

Вот мой сценарий:

on idle

    get the clipboard
    replacement of "SqlConnection" by "OleDbConnection" for the result
    replacement of "SqlDataAdapter" by "OleDbDataAdapter" for the result
    set the clipboard to (replacement of "SqlCommand" by "OleDbCommand" for the result)

end idle

on replacement of oldDelim by newDelim for sourceString
    set oldTIDs to text item delimiters of AppleScript
    set text item delimiters of AppleScript to oldDelim
    set strtoks to text items of sourceString
    set text item delimiters of AppleScript to newDelim
    set joinedString to strtoks as string
    set text item delimiters of AppleScript to oldTIDs
    joinedString
end replacement

Ответы [ 2 ]

3 голосов
/ 24 марта 2011

Самый простой способ сохранить форматирование - это откровенно использовать стилизованный текстовый редактор, такой как Text Edit или Pages, в качестве промежуточного этапа и манипулировать им там.т. е. откройте новый документ в Pages, вставьте свой текст, выполните поиск и замену, чтобы изменить текст, выделите все с помощью сценариев GUI и затем скопируйте его обратно в буфер обмена.

Эту технику можно использовать такженастройте шаблон в стиле, заполните информацию базы данных, а затем либо распечатайте ее, либо поместите в буфер обмена.Я использую это довольно много.Я просто хотел бы, чтобы вы могли сделать это с номерами.(Функция поиска и замены номера не имеет клавиатуры)

Редактировать : Вот простой и грязный пример сценария, использующий Pages в качестве промежуточного места для поиска и замены текста, который будет поддерживать форматирование.

tell application "Pages"
    activate
    make new document
end tell

tell application "System Events"
    tell process "Pages"
        -- paste clipboard
        keystroke "v" using (command down)
        -- go to top of document
        key code 126 using (command down)
        -- open find window
        keystroke "f" using (command down)
        -- set word to replace
        keystroke "original"
        -- tab to replace field
        keystroke tab
        -- set word to replace with
        keystroke "newword"
        -- press replace all button
        click button "Replace All" of tab group 1 of window "Find & Replace"
        -- close find window
        keystroke "w" using (command down)
        -- select all text
        keystroke "a" using (command down)
        -- copy back to clipboard
        keystroke "c" using (command down)
    end tell
end tell
2 голосов
/ 24 марта 2011

Во-первых, яблочный скрипт работает только с текстом, а не с форматированным текстом. Поэтому, когда вы вносите буфер обмена в appleScript, вы теряете все форматирование. С этим ничего не поделаешь. Во-вторых, для того, чтобы обработчик «на холостом ходу» работал, вам нужно вернуть значение времени, то есть время, когда обработчик снова запустится. Поэтому перед оператором «end idle» добавьте «return 10», что означает запуск сценария каждые 10 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...