Збільшення / зменшення розміру шрифту в iTerm2


31

Проблема: Я використовую ноутбук на ходу і підключаюсь до зовнішнього монітора, коли в офісі. З огляду на те, що зовнішній монітор дуже великий, мені потрібно збільшити шрифти у наявному iTerm2вікні (як правило, одному) та всіх вкладках.
Вирішення: я збільшую масштаби шрифтів 2-4 рази (натискаючи Cmd-+) для кожної відкритої вкладки у вікні (як правило, лише однієї).

Питання: Чи є простий спосіб я автоматизувати збільшення / зменшення розміру шрифту для всіх вкладок поточного вікна? Або якби я створив два окремих профілю, я міг би легко застосувати якийсь профіль до всіх відкритих вкладок у вікні?

Відповіді:


25

Існує справді лайно і клопіт спосіб автоматизувати це, але я все-таки опублікую його.

Ви можете створити новий профіль у налаштуваннях iTerm2 (панель «Профіль»). Назвемо це "LargeFont". Ви можете його клонувати за умовчанням, натиснувши ⌘ = .

Встановіть розмір шрифту, який потрібно відображати на новоствореній панелі "Текст".

Тепер ось хитрість. Ви не можете змінити ні розмір шрифту, ні профіль термінальних сеансів за допомогою AppleScript (принаймні, я не знайшов спосіб), але ви можете виконувати команди в кожному сеансі за допомогою AppleScript, і в iTerm2 є спеціальна послідовність виходу, яка підтримує зміну профілів для сеансу, в якому він був echoвідтворений.

Отже, ви можете виконати це:

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

у кожному відкритому сеансі змінити профіль терміналу на "LargeText".

Тепер ми можемо використовувати AppleScript для автоматизації виконання всіх відкритих сеансів:

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

Зауважте, що він просто записує текст (буквально) у кожен сеанс, тому якщо у вас є якийсь текстовий редактор, відкритий на одній із ваших вкладок - він не буде працювати в ньому, і вставить команду echo у ваш код / ​​файл конфігурації замість цього. Якщо у вас є команда ping, що працює на одній із вкладок - вона також не працюватиме.
Ви повинні переконатися, що в жодній із ваших оболонок не працює інтерактивний матеріал.

Ці команди також залишиться в історії вашої оболонки. Ви можете його обійти, додавши пробіл перед самою командою (як echo -e ...), це працює принаймні в zsh.

Ось функція 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"
}

Отже, ви можете використовувати його так:

iterm_change_profile LargeFont

Також є недолік - коли ви змінюєте профіль з одного з більшим шрифтом на менший, вікно iTerm значно змінюється.

Але, знову ж таки, це справді лайно.


Дякую, я спробую. Подібне, що я хотів би в iTerm2, було б також змінити попередньо встановлений колір (Solarized-Dark і Solarized-Light, залежно від навколишнього світла). Я припускаю, що для цього створу окремий профіль.
ван

1
Дякую, @Igor. Це працювало чудово, хоча, як ви вже згадували, це не найчистіший спосіб. І ви можете зняти прапорець для збільшення / зменшення вікна для зміни розміру, коли розмір шрифту змінюється в Загальних налаштуваннях -> "Налаштувати вікно при зміні розміру шрифту".
ван

@van Haha, я повністю пропустив цей варіант, дякую!
Ігор Хатаріст

тільки що з’ясував інше: якщо я використовую TmuxIntegration , зміна розміру шрифту працює на всіх вкладках (tmux windows / панелі). Хоча колір залишається лише на одній панелі.
ван
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.