iTerm2: Limpar buffers de rolagem para * todas as sessões

2

No iTerm2 (estou usando o Build 2.1.4 no momento em que escrevo), como posso limpar os buffers de rolagem para todas as sessões. Eu sei que cmd + K irá limpar a sessão atual. Usar a mesma combinação de teclas não funciona junto com a entrada de transmissão.

Aprecie a ajuda!

    
por kontinuity 27.12.2015 / 09:51

2 respostas

1

Este applescript deve limpar a rolagem para todas as sessões na janela atual do 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

Para vincular isso a um atalho de teclado:

  1. Abra o Automator e crie um novo serviço.

  2. Defina "Service Receives" como "no input" e selecione "iTerm.app" como o aplicativo.

  3. Coloque uma única ação Executar o Applescript e cole o código acima.

  4. Salve como clear-all-scrollback-buffers-in-current-iterm-window .

    Agora, quando o iTerm estiver aberto, você verá esse serviço na barra de menus iTerm > Serviços .

  5. Abra Preferências do sistema > Teclado > Atalhos > Serviços . Role para baixo até ver clear-all-scrollback-buffers-in-current-iterm-window . Dê-lhe um atalho de teclado (por exemplo, opção comando k )

Se isso não funcionar, você pode tentar o seguinte 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
    
por 09.02.2016 / 05:27
1

A resposta aceita não funcionou para mim. Estou usando o iTerm2 Build 3.0.15.

Aqui está o que funcionou, depois de ligar a ação desejada (no meu caso, Clear Buffer) para 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

Esta é uma ferramenta útil, pois tenho a tendência de manter os logs em funcionamento durante o dia e a noite. Eu programo isso para rodar via crontab todas as manhãs, então eu entro para trabalhar com um slate limpo e alguma memória liberada (que, dependendo do arquivo de log (s) que estou seguindo, pode chegar a gigabytes).

    
por 25.08.2017 / 00:11