Aumenta / diminuisci la dimensione del carattere in iTerm2


31

Problema: utilizzo un laptop in viaggio e mi collego a un monitor esterno in ufficio. Dato che il monitor esterno è molto grande, ho bisogno di aumentare i caratteri nella iTerm2finestra esistente (di solito uno) e tutte le schede.
Soluzione alternativa: ridimensiono i caratteri di 2-4 volte (premendo Cmd-+) per ogni scheda che ho aperto in una finestra (di solito solo una).

Domanda: esiste un modo semplice per automatizzare l' aumento o la riduzione della dimensione del carattere per tutte le schede della finestra corrente? Oppure, se dovessi creare due profili separati, potrei applicare facilmente un profilo a tutte le schede attualmente aperte in una finestra?

Risposte:


25

C'è un modo davvero merdoso e pieno di errori per automatizzare questo, ma lo pubblicherò comunque.

È possibile creare un nuovo profilo nelle preferenze di iTerm2 (riquadro Profilo). Chiamiamolo "LargeFont". Puoi clonarlo da quello predefinito premendo ⌘ = .

Imposta la dimensione del carattere che desideri che venga visualizzata nel riquadro Testo del profilo appena creato.

Ora ecco il trucco. Non puoi cambiare la dimensione del carattere o il profilo delle sessioni del terminale usando AppleScript (almeno non ho trovato un modo), ma puoi eseguire comandi in ogni sessione usando AppleScript e c'è una sequenza di escape personalizzata in iTerm2 che supporta la modifica dei profili per la sessione in cui è stato echoinserito.

Quindi, puoi eseguire quello:

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

in ogni sessione aperta per cambiare il profilo del terminale in "LargeText".

Ora possiamo usare AppleScript per automatizzare l'esecuzione per tutte le sessioni aperte:

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

Nota che scrive il testo (letteralmente) in ogni sessione, quindi se hai un editor di testo aperto in una delle tue schede - non funzionerà in esso e incollerà il comando echo nel tuo codice / file di configurazione anziché. Se hai un comando ping in esecuzione in una delle schede, non funzionerà anche.
Dovresti assicurarti che non ci siano oggetti interattivi in ​​esecuzione in nessuna delle tue shell.

Avrai anche questi comandi nella storia della tua shell. Potresti bypassarlo aggiungendo uno spazio prima del comando stesso (come echo -e ...), questo funziona almeno in zsh.

Ecco la funzione 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"
}

Quindi potresti usarlo così:

iterm_change_profile LargeFont

C'è anche un inconveniente: quando cambi il profilo da quello con il carattere più grande a quello più piccolo, la finestra di iTerm si ridimensiona in modo significativo.

Ma, di nuovo, è un modo davvero schifoso.


Grazie, ci proverò. Una cosa simile che vorrei in iTerm2 sarebbe quella di cambiare anche il colore preimpostato (Solarized-Dark e Solarized-Light a seconda della luce circostante). Presumo che creerò un profilo separato anche per quello.
van,

1
Grazie, @Igor. Funzionava bene, anche se come hai detto non è il modo più pulito. E puoi deselezionare l'opzione per aumentare / ridurre la finestra per ridimensionarla quando la dimensione del carattere cambia in Preferenze generali -> "Regola la finestra quando cambi la dimensione del carattere".
furgone,

@van Haha, ho perso questa opzione, grazie!
Igor Hatarist,

ho appena scoperto un'altra cosa: se uso TmuxIntegration , la modifica della dimensione del carattere funziona in tutte le schede (finestre / riquadri di tmux). Il colore è comunque solo per riquadro.
furgone,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.