Розбити вікно програмно за допомогою iTerm?


7

на своїй робочій станції з розробки мені часто доводиться запускати одні й ті ж команди щоранку.

zeus start, zeus server(завантаження рейок через zeus) redis-server, і, як і 3 інших.

Я знаю, що багато людей сказали б, щоб вони працювали весь час, але я багато працюю над власними речами, і це вимиває мене, коли всі ті працюють, поки я працюю над окремими проектами рейок.

Чи є якийсь просунутий псевдонім, який я можу зробити, який починає все це з однієї команди, в ідеалі, програмно розділивши вікно (як ⌘-D).

Я використовую iTerm2 з oh-my-zsh.

Я б не заперечував, якби вони були в одному вікні, я вважаю (якимось чином виконується як фонові процеси), проте мені потрібно іноді дивитися на вихід і працювати з результатами кожної команди, тому я не впевнений, як це буде працювати .

Дякую!

Відповіді:


6

Ви можете легко зателефонувати цьому з iTerm2 безпосередньо для імітації натискання D:

osascript -e 'tell application "System Events" to key code 2 using command down'

Для цього потрібно запустити програми у фоновому режимі, оскільки в іншому випадку ви не можете запустити osascript:

some-command &
osascript -e '…'

Звідти ви приземлитеся у новому вікні iTerm2, тому write textдля запуску подальших команд оболонки вам потрібно скористатися опцією в AppleScript. Дивіться тут докладніше: Як налаштувати AppleScript для відкриття нової вкладки iTerm2 та зміни каталогу?


Нічого собі, це чудово! Як би я міг поєднувати це зі своїм сценарієм. Я спробував &&, і це не вийшло, але я, мабуть, написав це неправильно.
Талбой

Я спробував запустити скрипт саме з цією командою, запустивши його з iTerm 2 (зсередини Zsh, така ж установка, як і ви), і він працював без проблем. Переконайтеся, що iTerm 2 активний під час виконання команди. Ви також можете спробувати вставити tell application "iTerm" to activate;перед іншою tellкомандою, щоб переконатися.
slhck

Вибачте, я повинен був уточнити. Сам сценарій працює ідеально, але, мабуть, я не впевнений, як поєднати його в один великий скрипт zsh, який, в основному,redis-server -> split -> other command -> split -> etc
Tallboy,

Ах, я бачу, що ти маєш на увазі. Оскільки ви перебуваєте в новому вікні (або розділеній панелі) після запуску першого osascript, вам потрібно виконати подальші команди за допомогою osascript- я додав приклад до своєї відповіді.
slhck

0

відповідь тут трохи застаріла. Ось приклад сценарію, який робить щось подібне:

tell application "iTerm"
    tell current window
        -- create a tab for background db stuff
        create tab with default profile
        tell current session
            write text "mongod &"
            write text "redis-server &"
        end tell
        close current tab

        -- create tab to run aioc server
        create tab with default profile
        tell current session
            write text "title server"
            write text "aactivate"
            write text "arunserver"
            -- split tab vertically to run scheduler
            split vertically with default profile
        end tell

        -- run scheduler
        tell last session of last tab
            write text "title scheduler"
            write text "aactivate"
            write text "ascheduler"
            -- split tab vertically to run main controller
            split vertically with default profile
        end tell

        -- run main_controller
        tell last session of last tab
            write text "title main_controller"
            write text "aactivate"
            write text "amain_controller"
            -- split tab vertically to run aggregator
            split vertically with default profile
        end tell

        tell last session of last tab
            write text "title aggregator"
            write text "aactivate"
            write text "aggregator"
        end tell




    end tell
end tell

чи змінилася будь-яка команда останнім часом із оновленнями до iterm та High Sierra? Нічого не відбувається, коли я намагаюся спілкуватися з останньою вкладкою. Iterm Build 3.1.5
Нік

Насправді мені потрібно виконувати команди з поверненого посиланого сеансу з split vertically with default profile. Таким чином я можу взаємодіяти з сеансом, який розколовся.
Нік

це працювало `` `!! / $ 1 "end Tell end end Tell end Tell END) osascript -e" $ termCMD "#echo" $ termCMD "#echo}` ``
Нік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.