Tambah / Perkecil Ukuran Font di iTerm2

31

Masalah: Saya menggunakan laptop saat bepergian, dan terhubung ke monitor eksternal ketika di kantor. Mengingat monitor eksternal sangat besar, saya perlu menambah font di iTerm2jendela yang ada (biasanya satu) dan semua tab.
Penanganan masalah: Saya meningkatkan ukuran font 2-4 kali (dengan menekan Cmd-+) untuk setiap tab yang saya buka di jendela (biasanya hanya satu).

Pertanyaan: Apakah ada cara mudah saya dapat mengotomatiskan peningkatan / penurunan ukuran font untuk semua tab pada jendela saat ini? Atau Jika saya membuat dua profil terpisah, dapatkah saya dengan mudah menerapkan beberapa profil ke semua tab yang sedang dibuka di jendela?

mobil van
sumber

Jawaban:

25

Ada cara yang sangat menyebalkan dan bermasalah untuk mengotomatisasi ini, tetapi saya tetap akan mempostingnya.

Anda dapat membuat profil baru di preferensi iTerm2 (panel Profil). Sebut saja "LargeFont". Anda dapat mengkloningnya dari default dengan menekan ⌘ = .

Setel ukuran font yang Anda inginkan untuk ditampilkan di panel teks profil yang baru dibuat.

Nah, inilah triknya. Anda tidak dapat mengubah ukuran font atau profil sesi terminal menggunakan AppleScript (setidaknya saya belum menemukan cara), tetapi Anda dapat menjalankan perintah di setiap sesi menggunakan AppleScript, dan ada urutan pelarian khusus di iTerm2 yang mendukung perubahan profil untuk sesi saat itu echo.

Jadi, Anda dapat menjalankannya:

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

di setiap sesi yang dibuka untuk mengubah profil terminal menjadi "LargeText".

Sekarang kita dapat menggunakan AppleScript untuk mengotomatiskan eksekusi untuk semua sesi yang dibuka:

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

Harap dicatat bahwa itu hanya menulis teks (secara harfiah) ke dalam setiap sesi, jadi jika Anda memiliki beberapa editor teks dibuka di salah satu tab Anda - itu tidak akan berfungsi di dalamnya, dan akan menempelkan perintah gema di file kode / konfigurasi Anda sebagai gantinya. Jika Anda memiliki perintah ping yang berjalan di salah satu tab - itu tidak akan berfungsi juga.
Anda harus memastikan tidak ada barang interaktif yang berjalan di kulit Anda.

Anda juga akan memiliki perintah-perintah ini yang tersisa dalam riwayat shell Anda. Anda dapat mem-bypassnya dengan menambahkan spasi sebelum perintah itu sendiri (seperti echo -e ...), ini berfungsi setidaknya dalam zsh.

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

Jadi Anda bisa menggunakannya seperti itu:

iterm_change_profile LargeFont

Ada juga kelemahan - ketika Anda mengubah profil dari yang dengan font yang lebih besar ke yang lebih kecil, jendela iTerm secara signifikan mengubah ukuran.

Tapi, sekali lagi, ini cara yang sangat menyebalkan.

Igor Hatarist
sumber
Terima kasih, saya akan mencobanya. Hal serupa yang saya ingin di iTerm2 adalah mengubah juga Preset Warna (Solarized-Dark dan Solarized-Light tergantung pada cahaya di sekitarnya). Saya berasumsi saya akan membuat profil terpisah untuk itu juga.
van
1
Terima kasih, @Igor. Ini bekerja dengan baik, meskipun seperti yang Anda sebutkan itu bukan cara terbersih. Dan Anda dapat menghapus centang opsi untuk menambah / mengurangi ukuran jendela ketika ukuran font berubah di Preferensi Umum -> "Sesuaikan Jendela saat mengubah ukuran font".
van
@van Haha, saya benar-benar merindukan pilihan itu, terima kasih!
Igor Hatarist
baru saja menemukan hal lain: jika saya menggunakan TmuxIntegration , mengubah ukuran font berfungsi di semua Tab (tmux windows / panes). Warna masih hanya per panel sekalipun.
van