2

В iTerm2 (я использую Build 2.1.4 на момент написания этой статьи), как я могу очистить буферы прокрутки для всех сессий. Я знаю, что cmd+K очистит текущую сессию. Использование одной и той же комбинации клавиш не работает вместе с широковещательным вводом.

Ценю помощь!

2 ответа2

1

Этот яблочный скрипт должен очистить прокрутку для всех сеансов в текущем окне iTerm:

tell application "iTerm"
    tell current terminal
        activate
        set myCurrentSession to the current session
        repeat with theSession in sessions
            tell theSession
                select
                tell application "System Events" to tell process "iTerm"
                    click menu item "Clear Buffer" of menu 1 of menu bar item "Edit" of menu bar 1
                end tell
            end tell
        end repeat
        select myCurrentSession
    end tell
end tell

Чтобы связать это с сочетанием клавиш:

  1. Откройте Automator и создайте новый Сервис.

  2. Установите "Служба получает" на "нет ввода" и выберите «iTerm.app» в качестве приложения.

  3. Вставьте одно действие Run Applescript и вставьте код сверху.

  4. Сохраните его как clear-all-scrollback-buffers-in-current-iterm-window .

    Теперь, когда iTerm открыт, вы увидите этот сервис в меню в разделе iTerm > Сервисы .

  5. Откройте Системные настройки > Клавиатура > Сочетания клавиш > Службы . Прокрутите вниз, пока не увидите clear-all-scrollback-buffers-in-current-iterm-window . Присвойте ему комбинацию клавиш (например, команду option k)

Если это не сработает, вместо этого вы можете попробовать следующий AppleScript:

tell application "iTerm"
    tell current terminal
        activate
        repeat with theSession in sessions
            tell theSession
                select
                tell application "System Events"
                    delay 0.1
                    keystroke "k" using {command down}
                end tell
            end tell
        end repeat
    end tell
end tell
1

Принятый ответ не работал для меня. Я использую iTerm2 Build 3.0.15.

Вот что сработало после привязки желаемого действия (в моем случае, Clear Buffer) к F12:

tell application "iTerm"
    set currentWindow to the current window
    set currentTab to the current tab of the current window
    set currentSession to the current session of the current tab of the current window
    repeat with aWindow in windows
        tell aWindow
            activate
            repeat with theTab in tabs of aWindow
                tell theTab
                    select
                    repeat with theSession in sessions of theTab
                        tell theSession
                            select
                            tell application "System Events" to tell process "iTerm"
                                tell application "System Events"
                                    key code 111
                                end tell
                            end tell
                        end tell
                    end repeat
                end tell
            end repeat
        end tell
    end repeat
    select currentWindow
    select currentTab
    select currentSession
end tell

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

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