Отправка команд из TextWrangler (BBEdit) в терминал

Я хочу отправлять команды из TextWrangler (или BBEdit) на терминал. Даже если бы я нашел это , я не понимаю, как это работает, так как я новичок в Unix и запускаю Applescripts.

tell application "BBEdit"
    set the_selection to (selection of front window as string)
    if (the_selection) is "" then
        set the_selection to line (get startLine of selection) of front window as string
    end if
end tell

tell application "Terminal"
    do script with command the_selection in window 1
end tell

Я сохранил Applescript, который выглядит так:введите описание изображения здесь

Теперь я думаю, что нужно поместить скрипт в папку сценариев TextWrangler:введите описание изображения здесь

  1. Но тогда как мне отправлять команды в Terminal.app?
  2. Как я могу нажать cmd + enter, чтобы отправить строку из TextWrangler в терминал?
Я хочу запустить свой файл построчно. Если я хочу записать все, что я делаю, чтобы протестировать различные функции, не запуская весь скрипт

Ответы (2)

Вы должны поместить скрипт в "/Users/yourName/Library/Application Support/TextWrangler/Scripts"папку

После того:

  • Откройте настройки TextWrangler.
  • Выберите «Меню и ярлыки» --> «Сценарии» --> «Ваш сценарий», чтобы добавить ярлык в сценарий.
  • TextWrangler принимает клавиши (cmd + enter) как ярлыквведите описание изображения здесь
Это именно то, что мне было нужно! Думаю, теперь мы можем каким-то образом использовать автодополнение... Я собираюсь это выяснить. Спасибо!
@ jackjr300, в каком приложении вы обработали это изображение настроек, чтобы добавить стрелки, особенно изогнутую стрелку?
@ user3439894, я использую Previewприложение на El Capitan , меню « Инструменты » -> « Аннотации » -> « Стрелка ». - Затем перетащите один из синих маркеров, чтобы переместить стрелку или изменить ее размер, перетащите зеленый маркер, чтобы сделать кривую. - Вы можете изменить стиль формы, вы можете добавить текст в начале или в конце стрелки.
@ jackjr300, спасибо за информацию об аннотации к изображению. Также спасибо за совет по назначению команды ввода из настроек TextWrangler. Я пытался назначить в Системных настройках Apple> Клавиатура> Сочетания клавиш> Ярлыки приложений и в OS X 10.8.5, и хотя технически я могу назначить команду-ввод для команды меню сценария в TextWrangler, тем не менее это не работает. Он удаляет то, что выбрано, и вставляет новую строку, что, конечно, противоречит цели. Однако, когда вы делаете это из настроек TextWrangler, это работает. Так что спасибо за все. +1

Чтобы использовать сценарий AppleScript в меню «Сценарий» TextWrangler, он (или ссылка на него) должен находиться в папке «Сценарий TextWrangler», расположенной по адресу ~/Library/Application Support/TextWrangler/Scripts , чтобы он отображался в меню. Примечание. «~» в этом пути — ваша домашняя папка, а папка «Библиотека» может быть не видна. Вы можете открыть его из меню «Сценарий» TextWrangler, команды «Открыть папку сценариев» и поместить сценарий или ссылку на сценарий из того места, где вы его сохранили.

Чтобы ответить на этот вопрос, я создал AppleScript с именем Run Selected Line(s) в Terminal.scpt и поместил его в папку Script TextWrangler, и теперь он доступен в меню Script в TextWrangle, как показано на изображении ниже.

TW_Script_Menu.png

Тем не менее, сценарий, который у вас есть, в том виде, в котором он написан, может дать сбой, поскольку Терминал может быть немного привередливым. Другими словами, если Терминал закрыт во время выполнения скрипта , то написанный код может привести к ошибке, например: «Произошла ошибка скрипта: Терминал получил ошибку: Не удается получить окно 1».

Даже говоря, чтобы Терминал активировался, не открывалось окно, как при открытии Терминала из плитки док-станции, для которой я установил «Сохранить в док-станции», и я получил вышеупомянутую ошибку. Таким образом, запрос Google дал много полезной информации. Поэтому я экспериментировал с несколькими различными решениями, которые я видел, и код , который я использую, показан ниже.


tell application "TextWrangler"
    activate
    set the_selection to (selection of front window as string)
    if (the_selection) is "" then
        set the_selection to line (get startLine of selection) of front window as string
    end if
end tell

tell application "Terminal"
    if not (exists window 1) then reopen
    activate
    -- delay 0.5
    do script with command the_selection in front window
end tell

Обратите внимание, что я закомментировал delay команду и --может понадобиться или не понадобиться в зависимости от того, закрыт ли Терминал изначально и насколько медленно реагирует ваша система. Значение в секундах выражается десятичным числом . Вы можете раскомментировать и изменить при необходимости.

Изображение кода с подсветкой синтаксиса:

код, показывающий синтаксическую подсветку

Примечание. Это было протестировано в OS X 10.8.5 и TextWrangler v4.5.9 (3390) и может по-разному реагировать в других версиях OS X и/или TextWrangler.