Erhöhen / Verringern der Schriftgröße in iTerm2

31

Problem: Ich benutze unterwegs einen Laptop und verbinde mich im Büro mit einem externen Monitor. Da der externe Monitor sehr groß ist, muss ich die Schriftarten im vorhandenen iTerm2Fenster (normalerweise eine) und auf allen Registerkarten vergrößern .
Problemumgehung: Ich skaliere die Schriftarten 2-4 mal (durch Drücken von Cmd-+) für jede Registerkarte, die ich in einem Fenster geöffnet habe (normalerweise nur eine).

Frage: Gibt es eine einfache Möglichkeit, das Erhöhen / Verringern der Schriftgröße für alle Registerkarten des aktuellen Fensters zu automatisieren ? Oder: Wenn ich zwei separate Profile erstellen würde, könnte ich dann einfach ein Profil auf alle aktuell geöffneten Registerkarten in einem Fenster anwenden?

van
quelle

Antworten:

25

Es gibt einen wirklich beschissenen und fehlerhaften Weg, dies zu automatisieren, aber ich werde es trotzdem posten.

Sie können ein neues Profil in den Einstellungen von iTerm2 (Bereich Profil) erstellen. Nennen wir es "LargeFont". Sie können es aus dem Standard klonen, indem Sie ⌘ = drücken .

Legen Sie die Schriftgröße fest, die im Textbereich des neu erstellten Profils angezeigt werden soll.

Hier ist der Trick. Sie können weder die Schriftgröße noch das Profil der Terminalsitzungen mit AppleScript ändern (zumindest habe ich keinen Weg gefunden), aber Sie können Befehle in jeder Sitzung mit AppleScript ausführen, und es gibt eine benutzerdefinierte Escape-Sequenz in iTerm2, die dies ermöglicht unterstützt das Ändern von Profilen für die Sitzung, in der es echobearbeitet wurde.

So können Sie das ausführen:

echo -e "\033]50;SetProfile=LargeFont\a"

in jeder geöffneten Sitzung, um das Terminalprofil in "LargeText" zu ändern.

Jetzt können wir AppleScript verwenden, um die Ausführung für alle geöffneten Sitzungen zu automatisieren:

tell application "iTerm"
    repeat with theTerminal in terminals
        tell theTerminal
            repeat with theSession in sessions
                tell theSession
                    write text "echo -e '\\033]50;SetProfile=LargeText\\a'"
                end tell
            end repeat
        end tell
    end repeat
end tell

Bitte beachten Sie, dass nur der Text (buchstäblich) in jede Sitzung geschrieben wird. Wenn Sie also einen Texteditor auf einer Ihrer Registerkarten geöffnet haben, funktioniert er nicht und fügt den Echo-Befehl in Ihre Code- / Konfigurationsdatei ein stattdessen. Wenn auf einer der Registerkarten ein Ping-Befehl ausgeführt wird, funktioniert er auch nicht.
Sie sollten sicherstellen, dass in keiner Ihrer Shells interaktive Inhalte ausgeführt werden.

Sie haben diese Befehle auch noch im Verlauf Ihrer Shell. Sie können es umgehen, indem Sie ein Leerzeichen vor dem Befehl selbst echo -e ...einfügen (wie ). Dies funktioniert zumindest in zsh.

Hier ist die zsh-Funktion:

function iterm_change_profile() {
    osascript -e "
        tell application \"iTerm\"
            repeat with theTerminal in terminals
                tell theTerminal
                    repeat with theSession in sessions
                        tell theSession
                            write text \" echo -e \\\"\\\\033]50;SetProfile=$1\\\\a\\\"\"
                        end tell
                    end repeat
                end tell
            end repeat
        end tell"
}

Du könntest es also so benutzen:

iterm_change_profile LargeFont

Es gibt auch einen Nachteil: Wenn Sie das Profil von dem mit der größeren Schriftart auf das kleinere ändern, ändert sich die Fenstergröße des iTerm erheblich.

Aber es ist wieder ein wirklich beschissener Weg.

Igor Hatarist
quelle
Danke, ich werde es versuchen. Eine ähnliche Sache, die ich in iTerm2 gerne hätte, wäre, auch die Farbvoreinstellung (Solarized-Dark und Solarized-Light, abhängig vom Umgebungslicht) zu ändern. Ich gehe davon aus, dass ich auch dafür ein separates Profil erstellen werde.
van
1
Vielen Dank, @Igor. Es hat gut funktioniert, obwohl es, wie Sie bereits sagten, nicht die sauberste Art ist. Und Sie können die Option zum Vergrößern / Verkleinern des Fensters deaktivieren, um die Größe zu ändern, wenn sich die Schriftgröße in den allgemeinen Einstellungen ändert -> "Fenster beim Ändern der Schriftgröße anpassen".
van
@van Haha, ich habe diese Option total verpasst, danke!
Igor Hatarist
Ich habe gerade eine andere Sache herausgefunden: Wenn ich die TmuxIntegration verwende , funktioniert das Ändern der Schriftgröße auf allen Registerkarten (tmux windows / panes). Die Farbe ist immer noch nur pro Scheibe.
van