<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Windows Terminal on kenji.blog</title><link>http://kenji.blog/ru/tags/windows-terminal/</link><description>Recent content in Windows Terminal on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ru</language><copyright>kenjinote</copyright><lastBuildDate>Sun, 13 Sep 2026 00:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/ru/tags/windows-terminal/index.xml" rel="self" type="application/rss+xml"/><item><title>Максимальная настройка Windows Terminal (настройка тем и промптов)</title><link>http://kenji.blog/ru/p/windows-terminal-ultimate-customization-guide/</link><pubDate>Sun, 13 Sep 2026 00:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/windows-terminal-ultimate-customization-guide/</guid><description>&lt;img src="http://kenji.blog/p/windows-terminal-ultimate-customization-guide/img/eyecatch.jpg" alt="Featured image of post Максимальная настройка Windows Terminal (настройка тем и промптов)" />&lt;h1 id="введение-зачем-настраивать-windows-terminal-по-максимуму">Введение: Зачем настраивать Windows Terminal по максимуму
&lt;/h1>&lt;p>В современной разработке программного обеспечения эмулятор терминала выходит за рамки простого интерфейса ввода-вывода команд, становясь важнейшей «кабиной пилота», которая напрямую влияет на производительность разработчика. Ранее стандартная для сред Windows «Командная строка (cmd.exe)» и традиционная консоль «Windows PowerShell» (conhost.exe) значительно уступали проработанным терминальным средам Linux и macOS из-за низкой производительности отрисовки, слабой кастомизации и неполной поддержки Unicode.&lt;/p>
&lt;p>Однако с появлением «Windows Terminal», разработку которого Microsoft ведет с открытым исходным кодом, ситуация кардинально изменилась. Сверхбыстрый рендеринг текста с аппаратным ускорением на базе DirectX, нативная поддержка вкладочного интерфейса (UI) и разделения на панели, свободно настраиваемые сочетания клавиш и функции расширенного управления профилями. Windows Terminal — это чрезвычайно мощное приложение, которое удовлетворяет всем требованиям к «современному терминалу», которые действительно искали разработчики.&lt;/p>
&lt;p>В этой статье представлено полное руководство по настройке, которое поможет превратить Windows Terminal в «идеальную» среду. Мы не ограничимся поверхностными визуальными изменениями, а проведем тщательный технический анализ: от математических моделей, лежащих в основе рендеринга текста, и глубинной структуры &lt;code>settings.json&lt;/code>, до внедрения Oh My Posh в PowerShell, настройки Starship в среде WSL и даже теоретического анализа задержек отрисовки.&lt;/p>
&lt;p>Надеемся, что эта статья поможет вам создать собственную идеальную среду терминала и кардинально улучшить ваш повседневный опыт написания кода.&lt;/p>
&lt;hr>
&lt;h1 id="1-архитектура-рендеринга-windows-terminal-и-математические-модели">1. Архитектура рендеринга Windows Terminal и математические модели
&lt;/h1>&lt;p>За столь быстрой и плавной работой Windows Terminal стоит сложный конвейер рендеринга, который максимально использует современный графический стек Windows. В отличие от старого GDI (Graphics Device Interface), Windows Terminal применяет аппаратное ускорение на базе GPU, используя DirectWrite и DirectX (Direct2D/Direct3D).&lt;/p>
&lt;p>Ниже представлена концептуальная схема конвейера рендеринга терминала — от ввода с клавиатуры до отображения символов на экране.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;Пользовательский ввод (Клавиатура/Мышь)&amp;#34;] --&amp;gt; B[&amp;#34;ConPTY (API псевдотерминала консоли)&amp;#34;]
B --&amp;gt; C[&amp;#34;Логика приложения терминала (Поток ввода)&amp;#34;]
C --&amp;gt; D[&amp;#34;Управление текстовым буфером и парсер&amp;#34;]
D --&amp;gt; E[&amp;#34;DirectWrite (Компоновка и формирование текста)&amp;#34;]
E --&amp;gt; F[&amp;#34;Direct2D/Direct3D (Аппаратный рендеринг)&amp;#34;]
F --&amp;gt; G[&amp;#34;Буфер кадров GPU&amp;#34;]
G --&amp;gt; H[&amp;#34;Вывод на дисплей&amp;#34;]
style A fill:#f9f,stroke:#333,stroke-width:2px
style H fill:#9ff,stroke:#333,stroke-width:2px
&lt;/pre>
&lt;h2 id="11-субпиксельное-сглаживание-шрифтов-и-геометрия">1.1 Субпиксельное сглаживание шрифтов и геометрия
&lt;/h2>&lt;p>При отрисовке текста технология сглаживания (anti-aliasing) абсолютно необходима для обеспечения высокой читаемости, предотвращающей усталость глаз даже при длительной работе. DirectWrite поддерживает продвинутое субпиксельное сглаживание, основанное на технологии ClearType.&lt;/p>
&lt;p>Каждый пиксель типичного ЖК-дисплея (LCD) состоит из трех вертикальных или горизонтальных субпикселей: R (красный), G (зеленый) и B (синий). Субпиксельное сглаживание — это метод, который управляет яркостью не на уровне целого пикселя (как в сглаживании в градациях серого), а использует высокое пространственное разрешение на уровне 1/3 пикселя.&lt;/p>
&lt;p>Пусть $ f(x, y) $ — бинарная функция, определяющая идеальный контур глифа векторного шрифта. Если координаты $ (x, y) $ внутри пикселя находятся внутри глифа, то $ f(x, y) = 1 $, а если снаружи — $ f(x, y) = 0 $.&lt;/p>
&lt;p>Яркость $ I_R $ одного субпикселя (например, красного) вычисляется как свертка (convolution) интеграла от $ f(x, y) $ в пространственной области этого субпикселя $ S_R $ с функцией фильтра $ h(x, y) $, которая корректирует физические характеристики дисплея и особенности человеческого зрения (например, гамма-коррекцию).&lt;/p>
$$
I_R = \iint_{S_R} f(x, y) \ast h(x, y) \,dx\,dy
$$&lt;p>Зеленый ($ I_G $) и синий ($ I_B $) цвета рассчитываются аналогичным образом на основе их соответствующих областей $ S_G, S_B $. В Windows Terminal такие сложные операции интегрирования и свертки на субпиксельном уровне обрабатываются с высокой степенью параллелизма с использованием заранее сгенерированного кэша глифов (текстуры Atlas) и пиксельных шейдеров GPU, что позволяет добиться прекрасного рендеринга текста без задержек и без нагрузки на CPU.&lt;/p>
&lt;hr>
&lt;h1 id="2-полное-понимание-и-глубокая-настройка-settingsjson">2. Полное понимание и глубокая настройка settings.json
&lt;/h1>&lt;p>Суть кастомизации Windows Terminal заключается в редактировании конфигурационного файла &lt;code>settings.json&lt;/code>. Хотя многие параметры можно изменить через графический интерфейс, для достижения максимальной настройки и возможности контроля версий через Git необходимо уметь редактировать JSON напрямую.&lt;/p>
&lt;p>Файл конфигурации в основном состоит из трех ключевых разделов:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>&lt;code>profiles&lt;/code>&lt;/strong>: Определяет поведение и внешний вид (шрифт, фон, начальная директория) для каждой оболочки (PowerShell, cmd, WSL, Azure Cloud Shell и т.д.).&lt;/li>
&lt;li>&lt;strong>&lt;code>schemes&lt;/code>&lt;/strong>: Определяет 16-цветные палитры (цветовые схемы), используемые в терминале.&lt;/li>
&lt;li>&lt;strong>&lt;code>actions&lt;/code>&lt;/strong>: Определяет пользовательские действия (привязки клавиш или разделение панелей), вызываемые сочетаниями клавиш или из палитры команд.&lt;/li>
&lt;/ol>
&lt;h2 id="21-иерархическая-структура-профилей-и-модель-наследования">2.1 Иерархическая структура профилей и модель наследования
&lt;/h2>&lt;p>В настройках профилей общие для всех профилей параметры указываются в объекте &lt;code>defaults&lt;/code>, а индивидуальные — в каждом объекте массива &lt;code>list&lt;/code>. Такая модель наследования устраняет избыточность файла конфигурации и улучшает его поддерживаемость.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;profiles&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;defaults&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;font&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;face&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;CaskaydiaCove Nerd Font&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;size&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">11&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;weight&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;normal&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;features&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;calt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;liga&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;useAcrylic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;acrylicOpacity&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.85&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cursorShape&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;filledBox&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cursorBlinking&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;padding&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;12, 12, 12, 12&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;antialiasingMode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;cleartype&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;historySize&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">10000&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;list&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;guid&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;{574e775e-4f2a-5b96-ac1e-a2962a402336}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hidden&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;PowerShell 7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Windows.Terminal.PowershellCore&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;colorScheme&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Tokyo Night&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;backgroundImage&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;C:\\Users\\Username\\Pictures\\Terminal\\cyberpunk_bg.png&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;backgroundImageOpacity&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.15&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;backgroundImageStretchMode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;uniformToFill&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;startingDirectory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;%USERPROFILE%\\Projects&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;guid&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;{2c4de342-38b7-51cf-b940-2309a097f518}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hidden&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Ubuntu-22.04&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Windows.Terminal.Wsl&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;colorScheme&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;One Half Dark&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;startingDirectory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;\\\\wsl$\\Ubuntu-22.04\\home\\username&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>В приведенном выше примере добавлена настройка &lt;code>&amp;quot;features&amp;quot;: { &amp;quot;calt&amp;quot;: 1, &amp;quot;liga&amp;quot;: 1 }&lt;/code>, которая включает лигатуры для шрифта. Благодаря этому последовательности символов вроде &lt;code>!=&lt;/code> или &lt;code>=&amp;gt;&lt;/code> будут отрисовываться как единый красивый символ, удобный для программирования.&lt;/p>
&lt;h2 id="22-модульная-настройка-с-помощью-json-fragments">2.2 Модульная настройка с помощью JSON Fragments
&lt;/h2>&lt;p>Windows Terminal поддерживает механизм расширений под названием «JSON Fragments». Это позволяет сторонним приложениям (например, свежеустановленному дистрибутиву WSL или инструментам разработки вроде Visual Studio) динамически и безопасно добавлять собственные профили и цветовые схемы в терминал без прямого изменения основного файла &lt;code>settings.json&lt;/code> пользователя.&lt;/p>
&lt;p>Этот механизм можно применять и тогда, когда разработчик хочет разделить свои собственные настройки для удобства управления (достаточно поместить файлы JSON в указанную директорию, и они будут объединены автоматически).&lt;/p>
&lt;hr>
&lt;h1 id="3-высший-визуальный-опыт-секреты-тем-шрифтов-и-фонов">3. Высший визуальный опыт: секреты тем, шрифтов и фонов
&lt;/h1>&lt;p>Цветовая схема терминала — это не только эстетика, но и важнейший фактор, напрямую влияющий на читаемость кода и логов, а также на снижение утомляемости глаз при долгой работе.&lt;/p>
&lt;h2 id="31-создание-и-применение-цветовых-схем">3.1 Создание и применение цветовых схем
&lt;/h2>&lt;p>В интернете доступно огромное количество цветовых схем для Windows Terminal (популярен сайт «Windows Terminal Themes»). Добавив их в массив &lt;code>schemes&lt;/code>, вы сможете использовать любые цвета.&lt;/p>
&lt;p>Ниже приведен пример определения популярной среди разработчиков темы «Tokyo Night». Это контрастная тема с преобладанием синих и фиолетовых оттенков, приятная для глаз.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;schemes&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Tokyo Night&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;background&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#1A1B26&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;foreground&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#A9B1D6&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;black&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#32344A&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;red&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#F7768E&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;green&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#9ECE6A&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;yellow&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#E0AF68&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;blue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7AA2F7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;purple&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#BB9AF7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cyan&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7DCFFF&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;white&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#A9B1D6&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightBlack&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#414868&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightRed&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#F7768E&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightGreen&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#9ECE6A&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightYellow&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#E0AF68&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightBlue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7AA2F7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightPurple&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#BB9AF7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightCyan&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7DCFFF&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightWhite&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#C0CAF5&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cursorColor&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#C0CAF5&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;selectionBackground&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#33467C&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Каждый цвет указывается в шестнадцатеричном коде (HEX) и соответствует номеру цвета (от 0 до 15) в ANSI-последовательностях.&lt;/p>
&lt;h2 id="32-установка-nerd-fonts-и-оптимизация-шрифтов-caskaydiacove-nerd-font">3.2 Установка Nerd Fonts и оптимизация шрифтов (CaskaydiaCove Nerd Font)
&lt;/h2>&lt;p>Если вы планируете использовать продвинутые инструменты для промпта, такие как Oh My Posh или Starship (о которых пойдет речь ниже), вам обязательно понадобятся шрифты с поддержкой специальных глифов (иконок), таких как значки веток Git, логотипы языков программирования или символы ОС. Шрифты, в которые добавлены (пропатчены) эти иконки к существующим шрифтам для программирования, называются «&lt;strong>Nerd Fonts&lt;/strong>».&lt;/p>
&lt;p>Разработанный Microsoft шрифт для программирования «Cascadia Code» отлично читается, но по умолчанию не содержит иконок Nerd Font. Поэтому настоятельно рекомендуется установить «&lt;strong>CaskaydiaCove Nerd Font&lt;/strong>» — пропатченную версию Cascadia Code.&lt;/p>
&lt;h3 id="инструкция-по-установке">Инструкция по установке:
&lt;/h3>&lt;ol>
&lt;li>Скачайте &lt;code>CascadiaCode.zip&lt;/code> со &lt;a class="link" href="https://github.com/ryanoasis/nerd-fonts/releases" target="_blank" rel="noopener"
>страницы релизов Nerd Fonts на GitHub&lt;/a>.&lt;/li>
&lt;li>Распакуйте архив, выберите файлы &lt;code>.ttf&lt;/code>, щелкните правой кнопкой мыши и выберите «Установить для всех пользователей».&lt;/li>
&lt;li>В &lt;code>settings.json&lt;/code> измените значение &lt;code>font.face&lt;/code> на &lt;code>&amp;quot;CaskaydiaCove Nerd Font&amp;quot;&lt;/code>.&lt;/li>
&lt;/ol>
&lt;h2 id="33-эффект-acrylic-и-создание-эффекта-погружения-с-помощью-фоновых-изображений">3.3 Эффект Acrylic и создание эффекта погружения с помощью фоновых изображений
&lt;/h2>&lt;p>Одной из функций, воплощающих Fluent Design System в Windows 11, является эффект материала «Acrylic (Акрил)». Он позволяет сделать фон терминала полупрозрачным, красиво размывая и пропуская окна или обои, находящиеся за ним.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;useAcrylic&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;acrylicOpacity&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="mf">0.75&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Кроме того, в качестве фона можно установить любое изображение. Поддерживаются даже GIF-анимации, что позволяет создавать динамичные фоны. Позицию и прозрачность изображения можно точно настроить.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImage&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;C:\\Users\\Username\\Pictures\\wallpapers\\anime_cyberpunk.gif&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImageOpacity&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="mf">0.2&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImageStretchMode&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;none&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImageAlignment&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;bottomRight&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Это открывает возможности для кастомизации, повышающей мотивацию — например, можно аккуратно разместить любимого персонажа или логотип в правом нижнем углу терминала.&lt;/p>
&lt;hr>
&lt;h1 id="4-максимизация-производительности-разделение-панелей-привязка-клавиш-и-палитра-команд">4. Максимизация производительности: разделение панелей, привязка клавиш и палитра команд
&lt;/h1>&lt;p>Windows Terminal изначально обладает базовыми функциями мультиплексоров терминалов (таких как tmux или screen) для разделения экрана на панели.&lt;/p>
&lt;p>Настроив раздел &lt;code>actions&lt;/code>, вы сможете свободно разделять, перемещать и изменять размер панелей экрана исключительно с помощью клавиатуры, не прикасаясь к мыши.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;actions&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;splitPane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;split&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;auto&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;splitMode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;duplicate&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+d&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;splitPane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;split&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+plus&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;splitPane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;split&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+minus&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;closePane&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ctrl+w&amp;#34;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Благодаря этим привязкам, вы можете изменять размер панели с помощью &lt;code>Alt + Shift + Стрелки&lt;/code> и мгновенно переключать фокус между панелями комбинацией &lt;code>Alt + Стрелки&lt;/code>. Это позволяет беспрепятственно выполнять сложные параллельные задачи: например, в одной панели запустить локальный сервер Node.js и следить за логами, в другой — выполнять команды Git, а в третьей — проверять статус контейнеров Docker.&lt;/p>
&lt;h2 id="41-режим-quake-глобальный-выпадающий-терминал">4.1 Режим Quake (Глобальный выпадающий терминал)
&lt;/h2>&lt;p>Также поддерживается «Quake Mode (Выпадающий режим)», позволяющий вызывать терминал с верхней части экрана в любой момент, подобно консоли в шутере «Quake». По умолчанию комбинация клавиш &lt;code>Win + \&lt;/code> плавно опускает сверху окно терминала размером в половину экрана. Это невероятно удобно, когда нужно быстро ввести команду.&lt;/p>
&lt;hr>
&lt;h1 id="5-автоматизация-макета-при-запуске-с-помощью-wtexe">5. Автоматизация макета при запуске с помощью &lt;code>wt.exe&lt;/code>
&lt;/h1>&lt;p>Типичные утренние рутины — открыть терминал в определенной папке проекта, разделить экран на три части и в каждой запустить сборку фронтенда, бэкенд-сервер и мониторинг базы данных — следует автоматизировать.&lt;/p>
&lt;p>Исполняемый файл Windows Terminal, &lt;code>wt.exe&lt;/code>, поддерживает мощные аргументы командной строки, позволяющие управлять профилем и состоянием панелей при запуске.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">wt&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="s2">&amp;#34;PowerShell 7&amp;#34;&lt;/span> &lt;span class="n">-d&lt;/span> &lt;span class="s2">&amp;#34;C:\Projects\MyApp&amp;#34;&lt;/span> &lt;span class="p">;&lt;/span> &lt;span class="nb">split-pane&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="s2">&amp;#34;Ubuntu-22.04&amp;#34;&lt;/span> &lt;span class="n">-d&lt;/span> &lt;span class="s2">&amp;#34;/var/log&amp;#34;&lt;/span> &lt;span class="n">-V&lt;/span> &lt;span class="p">;&lt;/span> &lt;span class="nb">split-pane&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="s2">&amp;#34;cmd&amp;#34;&lt;/span> &lt;span class="n">-H&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Сохранив эту команду как ярлык Windows или bat-файл, вы сможете одним кликом мгновенно восстанавливать сложную схему среды разработки.&lt;/p>
&lt;hr>
&lt;h1 id="6-эволюция-промпта-1-powershell-и-oh-my-posh">6. Эволюция промпта 1: PowerShell и Oh My Posh
&lt;/h1>&lt;p>То, что кардинально улучшает PowerShell (особенно кроссплатформенную последнюю версию PowerShell 7 / PowerShell Core) как стандартную оболочку в Windows — это «&lt;strong>Oh My Posh&lt;/strong>». Oh My Posh — это настраиваемый движок промптов, поддерживающий любые оболочки. Он красиво и визуально понятно отображает всю необходимую для разработки информацию: текущую директорию, ветку Git и статус изменений, версию Node.js или Python, контекст Kubernetes и многое другое.&lt;/p>
&lt;p>Следующая диаграмма показывает последовательность загрузки Oh My Posh и рендеринга промпта при запуске PowerShell.&lt;/p>
&lt;pre class="mermaid">
sequenceDiagram
participant U as &amp;#34;Пользователь&amp;#34;
participant WT as &amp;#34;Windows Terminal&amp;#34;
participant PS as &amp;#34;PowerShell Core (pwsh.exe)&amp;#34;
participant P as &amp;#34;$PROFILE (Microsoft.PowerShell_profile.ps1)&amp;#34;
participant OMP as &amp;#34;Исполняемый файл Oh My Posh&amp;#34;
U-&amp;gt;&amp;gt;WT: &amp;#34;Запуск профиля PowerShell&amp;#34;
WT-&amp;gt;&amp;gt;PS: &amp;#34;Запуск процесса&amp;#34;
PS-&amp;gt;&amp;gt;P: &amp;#34;Загрузка скрипта профиля&amp;#34;
P-&amp;gt;&amp;gt;OMP: &amp;#34;oh-my-posh init pwsh&amp;#34;
OMP--&amp;gt;&amp;gt;P: &amp;#34;Возврат скрипта/функций рендеринга промпта&amp;#34;
P--&amp;gt;&amp;gt;PS: &amp;#34;Выполнение функций (Invoke-Expression)&amp;#34;
PS-&amp;gt;&amp;gt;OMP: &amp;#34;Вызов oh-my-posh print primary (при каждом нажатии Enter)&amp;#34;
OMP--&amp;gt;&amp;gt;PS: &amp;#34;Возврат строки со стилями ANSI&amp;#34;
PS--&amp;gt;&amp;gt;WT: &amp;#34;Вывод строки промпта&amp;#34;
WT--&amp;gt;&amp;gt;U: &amp;#34;Отображение готового промпта&amp;#34;
&lt;/pre>
&lt;h2 id="61-установка-и-настройка-oh-my-posh">6.1 Установка и настройка Oh My Posh
&lt;/h2>&lt;p>В среде Windows его легко установить с помощью официального пакетного менеджера &lt;code>winget&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">winget&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">JanDeDobbeleer&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">OhMyPosh&lt;/span> &lt;span class="n">-s&lt;/span> &lt;span class="n">winget&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>После установки нужно отредактировать скрипт профиля PowerShell, чтобы инициализировать Oh My Posh при загрузке. Путь к профилю хранится в автоматической переменной &lt;code>$PROFILE&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">notepad&lt;/span> &lt;span class="nv">$PROFILE&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Когда файл откроется, добавьте следующий код:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Настройка псевдонимов (aliases)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-Alias&lt;/span> &lt;span class="n">ll&lt;/span> &lt;span class="nb">ls
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-Alias&lt;/span> &lt;span class="n">g&lt;/span> &lt;span class="n">git&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Включение предиктивного ввода IntelliSense (модуль PSReadLine)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-PSReadLineOption&lt;/span> &lt;span class="n">-PredictionSource&lt;/span> &lt;span class="nb">History
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-PSReadLineOption&lt;/span> &lt;span class="n">-PredictionViewStyle&lt;/span> &lt;span class="n">ListView&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Инициализация Oh My Posh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Укажите желаемую тему (например: jandedobbeleer).&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Путь к встроенным темам находится в переменной окружения $env:POSH_THEMES_PATH.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">oh-my&lt;/span>&lt;span class="n">-posh&lt;/span> &lt;span class="n">init&lt;/span> &lt;span class="n">pwsh&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-config&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$env:POSH_THEMES_PATH&lt;/span>&lt;span class="s2">\tokyonight_storm.omp.json&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Invoke-Expression&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Модуль Terminal-Icons для отображения иконок папок и файлов&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># (При первом запуске требуется Install-Module -Name Terminal-Icons -Repository PSGallery -Force)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Import-Module&lt;/span> &lt;span class="n">-Name&lt;/span> &lt;span class="nb">Terminal-Icons&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Доступны сотни готовых тем (config), но вы также можете создать собственную в форматах JSON, YAML или TOML. Используя концепцию «сегментов», вы можете свободно комбинировать информацию, отображаемую слева (Left) и справа (Right), для создания идеального промпта.&lt;/p>
&lt;hr>
&lt;h1 id="7-эволюция-промпта-2-архитектура-wsl2-и-интеграция-со-starship">7. Эволюция промпта 2: Архитектура WSL2 и интеграция со Starship
&lt;/h1>&lt;p>WSL2 (Windows Subsystem for Linux 2), позволяющая запускать настоящее ядро Linux в Windows, незаменима для современной веб- и cloud-native разработки. Для настройки промпта в оболочках (Bash или Zsh) внутри WSL, «&lt;strong>Starship&lt;/strong>» является оптимальным выбором.&lt;/p>
&lt;p>Starship — это невероятно быстрый и настраиваемый кросс-шелл промпт, написанный на языке Rust. Его главное преимущество заключается в том, что написав всего один конфигурационный файл (TOML), вы сможете воспроизвести абсолютно одинаковый промпт в любой оболочке, будь то Bash, Zsh или Fish.&lt;/p>
&lt;h2 id="71-установка-starship">7.1 Установка Starship
&lt;/h2>&lt;p>Откройте терминал WSL (например, Ubuntu) и выполните официальный установочный скрипт:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -sS https://starship.rs/install.sh &lt;span class="p">|&lt;/span> sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Далее, если вы используете Bash, добавьте следующее в конец файла &lt;code>~/.bashrc&lt;/code>, чтобы включить перехватчик:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># ~/.bashrc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">eval&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>starship init bash&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Если вы используете Zsh, добавьте в конец &lt;code>~/.zshrc&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># ~/.zshrc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">eval&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>starship init zsh&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="72-идеальная-настройка-через-starshiptoml">7.2 Идеальная настройка через starship.toml
&lt;/h2>&lt;p>Настройки Starship хранятся в файле &lt;code>~/.config/starship.toml&lt;/code>. Поскольку он в формате TOML, его легче читать и писать человеку по сравнению с JSON, а также он поддерживает комментарии.&lt;/p>
&lt;p>Ниже приведен пример конфигурации, которая создает современный и информативный промпт.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># ~/.config/starship.toml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Определение общего формата (порядка) промпта&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">format&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">[╭─](bold blue)$os$directory$git_branch$git_status$nodejs$python$golang$rust
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">[╰─$character](bold blue)&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Настройки отображения иконок ОС&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">os&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">disabled&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">format&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;[$symbol]($style) &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">os&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">symbols&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Ubuntu&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Windows&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Macos&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Alpine&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Настройки отображения директории&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">directory&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;bold cyan&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">read_only&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">truncation_length&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">truncate_to_repo&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Настройки ветки Git&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">git_branch&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">symbol&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;bold purple&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Настройки статуса Git&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">git_status&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;bold red&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">modified&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">staged&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">untracked&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">deleted&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;✖ &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Символ промпта (символ в строке ввода)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">character&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">success_symbol&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;[❯](bold green)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">error_symbol&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;[❯](bold red)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>В этой конфигурации промпт состоит из двух строк. На первой строке отображаются иконка ОС, текущий путь, ветка и статус Git, а также информация о версиях сред разработки (Node.js, Python и т.д.). Вторая строка — это простая строка ввода, которая экономит место на экране даже при вводе длинных команд.&lt;/p>
&lt;hr>
&lt;h1 id="8-математическая-модель-задержки-отрисовки-терминала-и-производительности">8. Математическая модель задержки отрисовки терминала и производительности
&lt;/h1>&lt;p>Одним из важнейших показателей, определяющих удобство использования терминала, является «&lt;strong>Задержка ввода (Input Latency)&lt;/strong>». Это время от момента нажатия клавиши на клавиатуре до момента изменения цвета соответствующих пикселей на экране и получения визуального отклика.&lt;/p>
&lt;p>Общую задержку $ T_{total} $ можно строго смоделировать математически как сумму следующих компонентов:&lt;/p>
$$
T_{total} = T_{hw\_input} + T_{os} + T_{pty} + T_{app} + T_{render} + T_{display}
$$&lt;p>Значения переменных и их типичная продолжительность:&lt;/p>
&lt;ul>
&lt;li>$ T_{hw\_input} $: Аппаратная задержка (около 1-5 мс) — от замыкания механического переключателя клавиши до ее опроса через USB-контроллер и отправки сигнала прерывания.&lt;/li>
&lt;li>$ T_{os} $: Задержка обработки очереди сообщений слоем драйвера HID (Human Interface Device) ОС (около 1-2 мс).&lt;/li>
&lt;li>$ T_{pty} $: Задержка буферизации и преобразования кодировки символов (например, из UTF-8 в UTF-16) модулем ConPTY (псевдотерминал) (около 2-10 мс).&lt;/li>
&lt;li>$ T_{app} $: Время обработки интерпретации команды со стороны оболочки (PowerShell/Bash) и определение вывода на экран. Сюда же входит время выполнения процессов, таких как получение статуса Git через Oh My Posh или Starship (около 10-50 мс).&lt;/li>
&lt;li>$ T_{render} $: Задержка рендеринга (около 2-8 мс) — от растрирования текстовых глифов как текстур в Windows Terminal (DirectWrite/DirectX), их передачи в память GPU до переключения цепочки обмена (swap chain).&lt;/li>
&lt;li>$ T_{display} $: Задержка дисплея (например, скорость отклика GtG, около 5-20 мс) — от вывода сигнала из буфера кадров GPU на монитор до физического изменения свечения молекул жидких кристаллов.&lt;/li>
&lt;/ul>
&lt;p>Команда разработчиков Windows Terminal приложила огромные усилия для минимизации именно $ T_{pty} $ и $ T_{render} $. В ранних версиях терминала пропуски кадров в кэше при растрировании текста вызывали резкие задержки (пропуски кадров), но в последних версиях был внедрен алгоритм «кэша глифов на основе атласа (Atlas-based glyph cache)».&lt;/p>
&lt;p>Благодаря атласированию глифов, отрисовка текста сводится к простым матричным вычислениям на GPU: «вырезанию из гигантской текстуры шрифта, заранее сгенерированной в памяти, и её композитингу (alpha blending) на экране».&lt;/p>
&lt;p>Если нужно отрисовать $ N $ символов, то традиционный подход с последовательной отрисовкой на CPU через GDI требовал времени порядка $ \mathcal{O}(N) $, в то время как рендеринг атласа на базе GPU с параллельными шейдерами позволяет выполнять отрисовку за константное время, близкое к $ \mathcal{O}(1) $.&lt;/p>
&lt;p>В результате, даже при огромном объеме логов, выводимых в стандартный поток вывода (например, &lt;code>npm install&lt;/code> или сообщения компилятора в крупном C++ проекте), Windows Terminal может плавно прокручивать текст с частотой 60 fps (или на дисплеях с высокой частотой обновления, 144 Гц и выше) без каких-либо зависаний.&lt;/p>
&lt;hr>
&lt;h1 id="9-продвинутые-методы-устранения-неполадок-и-отладки">9. Продвинутые методы устранения неполадок и отладки
&lt;/h1>&lt;p>При максимальной настройке Windows Terminal вы можете столкнуться с непредвиденными проблемами, такими как синтаксические ошибки в файле конфигурации или дефекты отрисовки шрифтов. В этом разделе представлены продвинутые методы устранения неполадок, предназначенные для инженеров.&lt;/p>
&lt;h2 id="91-валидация-json-schema-для-settingsjson">9.1 Валидация JSON Schema для settings.json
&lt;/h2>&lt;p>Структура &lt;code>settings.json&lt;/code> строго определена, поэтому рекомендуется использовать валидацию JSON Schema в вашем редакторе (например, VS Code) для проверки синтаксиса в реальном времени. Если вы откроете &lt;code>settings.json&lt;/code> в VS Code, по умолчанию будет применена схема Windows Terminal, и любые недопустимые имена свойств или ошибки типов значений (например, если передать строку туда, где ожидается число) будут сразу же подчеркнуты волнистой линией как предупреждение.&lt;/p>
&lt;h2 id="92-профилирование-производительности-промпта">9.2 Профилирование производительности промпта
&lt;/h2>&lt;p>Если промпт отображается слишком медленно (существует лаг между нажатием Enter и появлением следующей строки ввода), то, скорее всего, проблема кроется во времени выполнения Oh My Posh или Starship. Oh My Posh обладает расширенными возможностями отладки, позволяющими измерить время отрисовки каждого блока.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">oh-my&lt;/span>&lt;span class="n">-posh&lt;/span> &lt;span class="n">debug&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>При выполнении этой команды в терминал будут выведены переменные среды, пути к загруженным файлам конфигурации, а также подробное время выполнения (в мс) каждого сегмента промпта. Это позволяет точно определить, какой процесс (например, получение статуса Git в гигантском монорепозитории, проверка статуса аутентификации облачного провайдера или сетевые задержки) является узким местом, и провести настройку, отключив ненужные модули.&lt;/p>
&lt;h2 id="93-отключение-аппаратного-ускорения-gpu-откат-к-программному-рендерингу">9.3 Отключение аппаратного ускорения GPU (откат к программному рендерингу)
&lt;/h2>&lt;p>В редких случаях из-за старого оборудования или проблем со специфическими драйверами GPU аппаратный рендеринг через DirectX может вызывать мерцание экрана или обрезание текста. На этот случай существует опция принудительного отката к программному рендерингу.&lt;/p>
&lt;p>Добавьте следующую настройку на корневой уровень файла &lt;code>settings.json&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;softwareRendering&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Это переключит рендеринг с GPU на отрисовку силами CPU (WARP). Хотя производительность при этом снизится, точность отображения будет гарантирована. Это отличный способ локализовать проблему при возникновении графических артефактов.&lt;/p>
&lt;hr>
&lt;h1 id="заключение">Заключение
&lt;/h1>&lt;p>Истинная ценность Windows Terminal выходит далеко за рамки просто «замены старой командной строки». Новейшие технологии рендеринга с использованием DirectX, гибкая и мощная система настроек на базе JSON и бесшовная интеграция с различными оболочками, такими как WSL и PowerShell. Глубокое понимание этих аспектов и настройка терминала «под себя» позволяют до предела снизить «трение» в процессе разработки.&lt;/p>
&lt;p>Описанные в этой статье методы — тонкая настройка цветовых схем, расширение визуальной информации с помощью Nerd Fonts, умные контекстно-зависимые промпты от Oh My Posh и Starship, а также создание многозадачной среды с разделением панелей — не только улучшат ваш опыт написания кода, но и повысят саму мотивацию при работе с терминалом.&lt;/p>
&lt;p>Оптимизация рабочей среды не имеет конца. По мере появления новых инструментов командной строки и эволюции архитектуры ОС наши терминалы также будут менять свой облик. Мы надеемся, что эта статья станет для вас надежным ориентиром в бесконечном путешествии к созданию собственной «идеальной среды разработки».&lt;/p></description></item></channel></rss>