Zwiększ / zmniejsz rozmiar czcionki w iTerm2

31

Problem: korzystam z laptopa w podróży i podłączam się do zewnętrznego monitora w biurze. Biorąc pod uwagę, że monitor zewnętrzny jest bardzo duży, muszę zwiększyć czcionki w istniejącym iTerm2oknie (zwykle jednym) i na wszystkich kartach.
Obejście: Skalowuję czcionki 2-4 razy (naciskając Cmd-+) dla każdej karty, którą otworzyłem w oknie (zwykle tylko jedna).

Pytanie: Czy istnieje prosty sposób na automatyzację zwiększania / zmniejszania rozmiaru czcionki dla wszystkich kart bieżącego okna? Lub jeśli miałbym utworzyć dwa osobne profile, czy mógłbym łatwo zastosować jakiś profil do wszystkich aktualnie otwartych kart w oknie?

awangarda
źródło

Odpowiedzi:

25

Istnieje naprawdę gówniany i błędny sposób na zautomatyzowanie tego, ale i tak opublikuję.

Możesz utworzyć nowy profil w preferencjach iTerm2 (panel Profil). Nazwijmy to „LargeFont”. Możesz sklonować go z domyślnego, naciskając ⌘ = .

Ustaw rozmiar czcionki, która ma być wyświetlana w okienku tekstowym nowo utworzonego profilu.

Oto sztuczka. Nie można zmienić rozmiaru czcionki ani profilu sesji terminalowych przy użyciu AppleScript (przynajmniej nie znalazłem sposobu), ale możesz wykonywać polecenia w każdej sesji przy użyciu AppleScript, aw iTerm2 istnieje niestandardowa sekwencja ucieczki, która obsługuje zmianę profili dla sesji, w której był echoedytowany.

Możesz więc wykonać:

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

w każdej otwartej sesji, aby zmienić profil terminala na „LargeText”.

Teraz możemy użyć AppleScript do automatyzacji wykonywania wszystkich otwartych sesji:

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

Pamiętaj, że po prostu zapisuje tekst (dosłownie) w każdej sesji, więc jeśli masz jakiś edytor tekstu w jednej z kart - nie będzie w nim działał i wklei polecenie echo do pliku kodu / konfiguracji zamiast. Jeśli masz polecenie ping uruchomione na jednej z kart - to też nie zadziała.
Powinieneś upewnić się, że żadna z twoich powłok nie działa.

Te polecenia pozostaną również w historii twojej powłoki. Możesz to ominąć, dodając spację przed samym poleceniem (jak echo -e ...), działa to przynajmniej w zsh.

Oto funkcja zsh:

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"
}

Możesz więc użyć go w ten sposób:

iterm_change_profile LargeFont

Ma też pewną wadę - po zmianie profilu z większego na mniejszy, okno iTerma zmienia się znacznie.

Ale znowu to naprawdę gówniany sposób.

Igor Hatarist
źródło
Dziękuję, spróbuję. Podobną rzeczą, którą chciałbym w iTerm2 byłaby zmiana ustawienia kolorów (Solarized-Dark i Solarized-Light, w zależności od otaczającego światła). Zakładam, że dla tego też utworzę osobny profil.
van
1
Dzięki, @Igor. Działa ładnie, chociaż, jak wspomniałeś, nie jest to najczystszy sposób. Możesz też odznaczyć opcję zwiększenia / zmniejszenia okna, aby zmienić rozmiar, gdy rozmiar czcionki zmienia się w Preferencjach ogólnych -> „Dostosuj okno podczas zmiany rozmiaru czcionki”.
van
@van Haha, całkowicie przegapiłem tę opcję, dzięki!
Igor Hatarist
właśnie odkryłem inną rzecz: jeśli używam TmuxIntegration , zmiana rozmiaru czcionki działa na wszystkich kartach (okna / panele tmux). Kolor nadal jest jednak tylko na szybie.
van