Terminal Access добавляет управляемую с клавиатуры навигацию, поиск, закладки и звуковые сигналы в 30 оконных терминальных приложений, включая Windows Terminal, PowerShell, Command Prompt, WSL и популярные сторонние эмуляторы. Он предоставляет навигацию по строкам, словам и символам в выводе терминала без перемещения курсора, позволяя читать результаты команд так же, как вы читаете документ.
Откройте это руководство в любое время из терминала, нажав NVDA+Shift+F1.
.nvda-addon со страницы релизов.Terminal Access требует Windows 10 или 11 и NVDA 2025.1 или новее.
Откройте любой поддерживаемый терминал. Когда Terminal Access распознает его, вы услышите: "Поддержка Terminal Access активна. Нажмите NVDA+shift+f1 для справки."
Вы можете читать вывод терминала двумя способами:
Слой команд быстрее для последовательности команд и позволяет избежать конфликтов с другими дополнениями. Оба способа выполняют одни и те же команды, и вы можете переназначать любые жесты в диалоге "Жесты ввода" NVDA в категории "Terminal Access".
Эти несколько команд покрывают большую часть задач чтения. В первом столбце указана клавиша внутри слоя команд, во втором — эквивалентный прямой жест.
| Слой команд | Прямой жест | Действие |
|---|---|---|
| I / O / U | NVDA+I / O / U | Прочитать текущую / следующую / предыдущую строку |
| K / L / J | NVDA+K / L / J | Прочитать текущее / следующее / предыдущее слово |
| , / . / M | NVDA+, / . / M | Прочитать текущий / следующий / предыдущий символ |
| A | NVDA+A | Непрерывное чтение (прочитать всё) |
| ; | NVDA+; | Объявить позицию (строка, столбец) |
| Escape | Выйти из слоя команд |
Полный справочник по всем командам приведен в следующем разделе.
Слой команд — это модальный режим ввода, который выполняет команды Terminal Access с помощью однократных нажатий клавиш вместо многоклавишных комбинаций с модификатором NVDA. Это позволяет избежать конфликтов с другими дополнениями NVDA и ускоряет ввод команд.
| Жест | Действие |
|---|---|
| NVDA+апостроф | Войти в слой команд. Вы услышите "Команды терминала" и высокий тон. |
| Escape или NVDA+апостроф | Выйти из слоя команд. Вы услышите "Выход из команд терминала" и низкий тон. |
Слой остается активным до тех пор, пока вы не выйдете из него. Каждая команда оставляет вас в слое, чтобы вы могли выполнять цепочки команд. Слой автоматически закрывается, когда фокус покидает терминал.
В слое команд активны следующие клавиши:
| Клавиша | Действие |
|---|---|
| U / I / O | Прочитать предыдущую / текущую / следующую строку |
| J / K / L | Прочитать предыдущее / текущее / следующее слово |
| M / , / . | Прочитать предыдущий / текущий / следующий символ |
| Home / End | Перейти в начало / конец строки |
| PageUp / PageDown | Перейти в начало / конец буфера |
| Shift+Left / Right | Прочитать до начала / конца строки |
| Shift+Up / Down | Прочитать до начала / конца буфера |
| Клавиша | Действие |
|---|---|
| A | Непрерывное чтение (прочитать всё) |
| ; | Объявить позицию (строка, столбец) |
| Shift+A | Прочитать атрибуты текста и цвета |
| I (дважды) | Объявить отступ строки |
| , (дважды) | Фонетическое чтение символа |
| , (трижды) | Код символа |
| K (дважды) | Произнести текущее слово по буквам |
| Клавиша | Действие |
|---|---|
| R | Переключить метку (начало/конец) |
| C | Копировать линейное выделение |
| X | Очистить метки |
| V | Войти в режим копирования (L=строка, S=экран, Esc=отмена) |
| Клавиша | Действие |
|---|---|
| W | Прочитать содержимое окна |
| Shift+W | Установить границы окна |
| Ctrl+W | Очистить окно |
| Y | Переключить режим отслеживания курсора |
| Клавиша | Действие |
|---|---|
| Q | Переключить тихий режим |
| - / = | Уменьшить / увеличить уровень пунктуации |
| D | Переключить объявление отступов |
| P | Объявить активный профиль. Нажмите дважды для выбора. |
| Клавиша | Действие |
|---|---|
| 0-9 | Перейти к закладке |
| Shift+0-9 | Установить закладку на текущей строке (текст строки сохраняется как метка) |
| B | Открыть диалог списка закладок (показывает номер закладки и содержимое строки; нажмите Enter для перехода, Delete для удаления) |
| Клавиша | Действие |
|---|---|
| T | Создать новую вкладку |
| Shift+T | Список вкладок |
| Клавиша | Действие |
|---|---|
| E | Список URL, найденных в выводе терминала |
| F | Поиск в выводе терминала |
| F3 | Следующее совпадение поиска |
| Shift+F3 | Предыдущее совпадение поиска |
Диалог поиска содержит текстовое поле и две опции: Учитывать регистр (точное совпадение букв) и Регулярное выражение (интерпретировать текст как регулярное выражение Python). Обе опции запоминают свое состояние для следующего поиска в сессии. Если регулярное выражение недействительно, вы услышите короткое сообщение, и поиск не будет выполнен.
Поиск открывает диалог результатов, в котором перечислены все строки с совпадениями. Активация результата (Enter или кнопка "Активировать") закрывает диалог и помещает курсор обзора в начало строки с совпадением (так же, как переход по закладке), поэтому команда чтения текущей строки прочитает это совпадение. После закрытия диалога F3 и Shift+F3 продолжают перебор оставшихся совпадений, объявляя позицию каждого как "N из M" и произнося "Обертка", когда навигация зацикливается в начало. Если поиск не нашел ничего, предлагаются нечеткие совпадения (с одной ошибкой).
Результаты поиска фиксируются в момент выполнения поиска. Если программа затем выводит новые данные, следующее нажатие "найти далее" или "найти предыдущее" повторяет поиск по текущему буферу, чтобы результаты оставались точными, сохраняя вашу позицию на той же строке совпадения, где это возможно. Результаты сохраняются для каждого окна терминала в текущей сессии NVDA; они не сохраняются при перезапуске NVDA.
| Клавиша | Действие |
|---|---|
| G | Включить/выключить режим таблицы для таблицы под курсором обзора |
| Клавиша | Действие |
|---|---|
| F1 | Открыть руководство пользователя |
| S | Открыть настройки Terminal Access |
| Escape | Выйти из слоя команд |
Когда вы нажимаете V в слое команд, вы входите в режим копирования. Клавиши L (копировать строку), S (копировать экран) и Escape (отмена) временно заменяют свои привязки в слое. При выходе из режима копирования эти привязки восстанавливаются.
Все команды Terminal Access, как в слое, так и прямые, зарегистрированы в категории "Terminal Access" диалога "Жесты ввода" NVDA. Вы можете переназначить любой жест.
Нажмите E в слое команд (или NVDA+Alt+U напрямую), чтобы просканировать буфер терминала на наличие URL. Откроется интерактивный диалог:
| Элемент | Описание |
|---|---|
| Поле фильтра | Введите текст для сужения результатов |
| Список URL | Показывает каждый URL, его номер строки и окружающий текст |
| Открыть (Alt+O) | Открывает выбранный URL в браузере по умолчанию |
| Копировать URL (Alt+C) | Копирует URL в буфер обмена |
| Перейти к строке (Alt+M) | Объявляет строку, содержащую URL |
| Закрыть (Escape) | Закрывает диалог |
Поддерживаемые типы URL: HTTP/HTTPS, FTP, с префиксом www и терминальные гиперссылки OSC 8. Дубликаты URL удаляются автоматически.
Примечание по безопасности: URL с file://, javascript: или другими не-веб-схемами обнаруживаются и отображаются в списке, но не могут быть открыты из диалога. Попытка открыть такой URL вызывает голосовое сообщение "Невозможно открыть этот тип URL по соображениям безопасности". Это предотвращает использование вредоносного вывода терминала, который может обманом заставить вас запустить опасные локальные ресурсы.
Терминальные программы часто выводят табличные данные, такие как docker ps, kubectl get pods, ls -l, psql и таблицы в формате Markdown. При чтении как обычный текст они превращаются в длинные строки, где трудно сопоставить значение с его заголовком. Режим таблицы читает вывод по столбцам и объявляет заголовок для каждой ячейки, так что вы всегда знаете, в каком столбце находитесь.
Поместите курсор обзора на любую строку таблицы, затем нажмите G в слое команд (или NVDA+Alt+G напрямую). Если таблица обнаружена в этой позиции, режим таблицы активируется, и клавиши со стрелками перемещают по ячейкам. Если таблица не найдена, вы услышите "Таблица не найдена в этой позиции".
Нажмите Escape или переключите команду снова, чтобы выйти из режима таблицы. Режим таблицы также автоматически закрывается, когда фокус покидает терминал.
Пока активен режим таблицы, следующие клавиши управляют навигацией:
| Клавиша | Действие |
|---|---|
| Стрелка вверх / вниз | Предыдущая / следующая строка |
| Стрелка влево / вправо | Предыдущий / следующий столбец |
| Home / End | Первый / последний столбец в строке |
| Ctrl+Стрелка вверх | Объявить заголовок текущего столбца |
| Пробел | Прочитать сводку по текущей строке |
| Escape | Выйти из режима таблицы |
Каждая ячейка объявляется с заголовком столбца и значением ячейки, поэтому вы можете перемещаться по столбцу и сравнивать значения, не теряя их смысла.
Режим таблицы распознает два формата:
| Формат | Примеры |
|---|---|
| Выровненные столбцы | Вывод с пробелами, например docker ps, kubectl get pods, ls -l |
| Таблицы с разделителями | Таблицы в стиле Markdown и сетки psql с разделителем | |
Обнаружение столбцов в режиме таблицы основано на эвристике. Он определяет начало и конец столбцов на основе выравнивания пробелов и символов-разделителей в видимом тексте, поскольку вывод терминала не содержит структурной разметки, описывающей столбцы. Это хорошо работает для распространенных утилит, перечисленных выше, но необычные интервалы, перенос строк, ячейки с несколькими пробелами или широкие символы (CJK) могут привести к неправильному определению границ столбцов.
Это поведение будет улучшено в будущих обновлениях по мере сбора результатов тестирования и сообщений пользователей о таблицах, которые не распознаются или разбиваются некорректно. Если вы столкнулись с таблицей, которая читается неправильно, сообщите об этом с примером вывода, чтобы мы могли улучшить распознавание.
Закладки позволяют сохранять и быстро возвращаться к определенным строкам в буфере терминала.
Нажмите Shift+0 – Shift+9 в слое команд (или NVDA+Alt+0 – NVDA+Alt+9 напрямую), чтобы установить закладку на текущей строке. Текст строки сохраняется как метка для последующей идентификации.
Нажмите 0-9 в слое команд (или Alt+0 – Alt+9 напрямую), чтобы перейти к соответствующей закладке.
Нажмите B в слое команд (или NVDA+Shift+B напрямую), чтобы открыть интерактивный список. В диалоге отображаются два столбца: номер закладки и содержимое строки. Нажмите Enter, чтобы перейти к выбранной закладке, или Delete, чтобы удалить её.
Закладки хранятся для каждого окна терминала и сохраняются, пока это окно открыто, включая случаи, когда фокус уходит и возвращается. Разные окна терминала имеют свои собственные закладки. Обратите внимание, что несколько вкладок внутри одного окна Windows Terminal используют одно окно, поэтому они используют общие закладки. Закладки хранятся только для текущей сессии NVDA; они не сохраняются при перезапуске NVDA. На окно сохраняется до 50 закладок; когда лимит достигнут, установка новой закладки сопровождается сообщением "Достигнут лимит закладок" до тех пор, пока вы не удалите одну из них.
Поскольку вывод терминала прокручивается, закладка указывает на строку по её содержимому. Переход к закладке повторно находит эту строку, что надежно, пока строка все еще находится в буфере; если строка вышла за пределы истории терминала, переход может не сработать.
Terminal Access воспроизводит звуковые сигналы, когда вы перемещаетесь по строкам, содержащим ошибки или предупреждения. Это помогает на слух просматривать вывод сборки, результаты тестов или файлы журналов.
Детектор распознает распространенные шаблоны из вывода компиляторов, линтеров и командной оболочки, такие как error:, ERROR, warning: и WARN.
| Настройка | Тип | По умолчанию | Описание |
|---|---|---|---|
| Звуковые сигналы ошибок | логическое | True | Воспроизводить тоны на строках с ошибками/предупреждениями при навигации. |
| Звуковые сигналы ошибок в тихом режиме | логическое | False | Воспроизводить тоны ошибок/предупреждений при событиях каретки, когда активен тихий режим. |
| Тоны активности вывода | логическое | False | Воспроизводить два восходящих тона (600+800 Гц), когда появляется новый вывод программы. |
| Задержка активности вывода | целое | 1000 мс | Минимальный интервал между тонами активности. Диапазон: от 100 до 10000 мс. |
Настройте эти параметры в меню NVDA > Параметры > Настройки > Настройки терминала.
Жесты Terminal Access активируются только внутри поддерживаемых терминалов. Вне терминала жесты передаются NVDA или другим дополнениям. Обнаружение терминала использует точное совпадение по имени процесса.
Terminal Access обнаруживает, когда его сочетания клавиш конфликтуют с другими установленными дополнениями NVDA. При обнаружении конфликта вы получаете предупреждение, чтобы вы могли решить, какое назначение оставить.
Для разрешения конфликтов:
Слой команд и жесты справки (NVDA+Shift+F1) не могут быть отключены.
Профили приложений адаптируют настройки Terminal Access в зависимости от используемого терминального приложения. Каждый профиль может настраивать уровни пунктуации, режимы отслеживания курсора и области окна для специализированного поведения.
Terminal Access поставляется с профилями по умолчанию для популярных приложений:
Просматривайте, экспортируйте, импортируйте и удаляйте профили в меню NVDA > Параметры > Настройки > Настройки терминала > Профили приложений. В раскрывающемся списке "Установленные профили" сначала отображаются профили по умолчанию, затем пользовательские профили в алфавитном порядке.
Когда профиль активен, его настройки переопределяют глобальные настройки Terminal Access. Например, если профиль less отключает эхо клавиш, эхо клавиш отключается во время работы less, независимо от глобальной настройки.
Если вы переключаете настройку, например тихий режим, пока активен профиль, изменение сохраняется в переопределениях этого профиля, а не в глобальных настройках. При переключении на другое приложение глобальные настройки восстанавливаются.
Создайте пользовательский профиль, экспортировав существующий как шаблон, отредактировав JSON и импортировав его обратно:
{
"appName": "myapp",
"displayName": "Мое приложение",
"punctuationLevel": 2,
"cursorTrackingMode": 1,
"quietMode": false,
"keyEcho": true,
"linePause": true,
"repeatedSymbols": true,
"windows": [
{
"name": "status",
"top": 9999,
"bottom": 9999,
"left": 1,
"right": 9999,
"mode": "silent",
"enabled": true
}
]
}
Terminal Access поддерживает 30 терминалов: 5 встроенных терминалов Windows, WSL и 24 сторонних эмулятора. Он автоматически обнаруживает их при переключении, и для каждого предусмотрен профиль по умолчанию, настроенный для обычного использования.
Windows Terminal, cmd (Командная строка), powershell (Windows PowerShell), pwsh (PowerShell Core) и conhost (Console Host).
Cmder, ConEmu, mintty (Git Bash и Cygwin), PuTTY и KiTTY, Terminus, Hyper, Alacritty, WezTerm, Tabby, FluentTerminal, Ghostty, Rio, Wave Terminal, Contour, Cool Retro Term, MobaXterm, SecureCRT, Tera Term, mRemoteNG и Royal TS.
| Категория | Терминалы | Пунктуация | Отслеживание курсора |
|---|---|---|---|
| Общие | Cmder, ConEmu, Terminus, Hyper, Tabby, FluentTerminal | SOME | STANDARD |
| Разработка | mintty (Git Bash) | MOST | STANDARD |
| Удаленный доступ | PuTTY, KiTTY | SOME | STANDARD |
| Высокая производительность | Alacritty, WezTerm | SOME | STANDARD |
Все функции Terminal Access работают со сторонними терминалами: навигация, выделение, отслеживание курсора, уровни пунктуации и определения окон. Чтобы настроить терминал, используйте его, откройте Настройки NVDA > Terminal Access, настройте параметры и экспортируйте профиль для резервного копирования или обмена.
Определения окон отмечают области экрана терминала с различным речевым поведением. Это полезно для приложений со строками состояния, командными областями или разделенными панелями.
Каждое определение окна имеет имя, координаты (верх, низ, лево, право), режим и флаг включения.
Координаты отсчитываются с 1, поэтому строка 1, столбец 1 — это верхний левый угол. Значение 9999 означает "последняя строка или столбец".
| Режим | Поведение |
|---|---|
| announce | Читать содержимое обычным образом (по умолчанию) |
| silent | Подавлять всю речь для этой области |
| monitor | Отслеживать изменения, но объявлять иначе |
[
{
"name": "editor",
"top": 1,
"bottom": 9998,
"left": 1,
"right": 9999,
"mode": "announce"
},
{
"name": "status",
"top": 9999,
"bottom": 9999,
"left": 1,
"right": 9999,
"mode": "silent"
}
]
Этот пример читает все строки, кроме последней (область редактора), обычным образом, а последнюю строку (строка состояния) замалчивает. Обычное применение включает замалчивание строк состояния, определение панелей tmux или screen, обработку заголовков htop и мониторинг областей ввода команд.
Terminal Access корректно обрабатывает символы двойной ширины, текст, написанный справа налево, и сложные последовательности эмодзи.
Китайские, японские и корейские символы считаются как 2 столбца, поэтому операции на основе столбцов работают правильно. Обработка комбинируемых знаков нулевой ширины выполняется корректно.
Hello世界 # "Hello" = 5 столбцов, "世界" = 4 столбца, всего = 9 столбцов
Terminal Access определяет арабский и иврит по диапазону символов и применяет алгоритм двунаправленного письма Unicode (UAX #9), включая контекстное изменение формы арабских символов и смешанный текст RTL/LTR.
Для полной поддержки RTL установите дополнительные библиотеки:
pip install python-bidi arabic-reshaper
Без них Terminal Access использует базовую поддержку Unicode.
Terminal Access обрабатывает последовательности с соединителем нулевой ширины (эмодзи семьи и профессии), модификаторы цвета кожи, селекторы вариаций и последовательности флагов. Эмодзи обычно имеют ширину 2 столбца.
Для полной поддержки эмодзи установите дополнительную библиотеку:
pip install emoji
Terminal Access включает оптимизации для больших буферов терминала.
Terminal Access обнаруживает инструменты командной строки на основе ИИ и добавляет навигацию для рабочих процессов с беседами. Поддерживаемые инструменты: Claude, Aider, ChatGPT CLI, GitHub Copilot CLI, Gemini CLI, OpenAI Codex CLI и Ollama.
Экспериментально: обнаружение витков диалога и блоков кода основано на эвристике. Он определяет границы по маркерам приглашений каждого инструмента, поэтому инструмент с нестандартным выводом может разделять витки диалога в неправильном месте или пропускать блок кода. Если беседа читается неправильно, сообщите об этом с примером, чтобы мы могли улучшить обнаружение.
Terminal Access разделяет буфер на витки диалога на основе маркеров ролей, используемых каждым AI CLI (приглашения пользователя и ответы ассистента).
| Слой команд | Прямой жест | Действие |
|---|---|---|
| Ctrl+T | NVDA+Alt+T | Перейти к следующему витку |
| Ctrl+Shift+T | NVDA+Alt+Shift+T | Перейти к предыдущему витку |
Когда вы попадаете на виток, Terminal Access объявляет роль (пользователь или ассистент) и первую строку. Если в этом направлении больше нет витков, вы услышите "Больше нет витков".
Terminal Access сканирует блоки кода в тройных обратных кавычках и отслеживает язык, начальную строку, конечную строку и содержимое каждого блока.
| Слой команд | Прямой жест | Действие |
|---|---|---|
| Ctrl+B | NVDA+Alt+B | Следующий блок кода |
| Ctrl+Shift+B | NVDA+Alt+Shift+B | Предыдущий блок кода |
| Ctrl+L | NVDA+Alt+L | Объявить блок кода (язык и количество строк) |
| Ctrl+C | NVDA+Alt+C | Скопировать блок кода в буфер обмена |
| Ctrl+E | NVDA+Alt+E | Объяснить блок кода |
Команда "Объяснить" дает краткое автономное объяснение блока. Она защищена настройкой конфиденциальности "Разрешить объяснение кода", которая по умолчанию выключена.
Нажмите NVDA+Shift+D, чтобы услышать только то, что изменилось с последней проверки, пока ИИ-ассистент транслирует свой ответ. Terminal Access сравнивает текущий буфер с сохраненным снимком, чтобы найти новый контент.
Нажмите Ctrl+F в слое команд, чтобы выполнить поиск только в текущем витке диалога. Стандартный поиск (F в слое команд) по-прежнему ищет по всему буферу.
Terminal Access распознает специфические для ИИ шаблоны ошибок в дополнение к стандартным ошибкам компиляторов и оболочки.
| Тип шаблона | Примеры |
|---|---|
| Ограничение скорости | "rate limit exceeded", "429 Too Many Requests" |
| Лимит токенов | "token limit reached", "message was truncated" |
| Ошибка API | "invalid API key", "authentication failed" |
| Соединение | "unable to reach API endpoint" |
Ошибки ограничения скорости и лимита токенов воспроизводят пульсирующий низкий тон (два быстрых сигнала по 220 Гц). Другие ошибки API воспроизводят один низкий тон.
Уровень подробности контролирует, сколько дополнительного контекста произносит Terminal Access. Нажмите Shift+V в слое команд (или NVDA+Shift+V), чтобы переключать уровни, или установите в меню NVDA > Параметры > Настройки > Настройки терминала.
| Уровень | Поведение |
|---|---|
| Тихий | Объявляются только ошибки и границы витков |
| Обычный | Стандартные объявления (по умолчанию) |
| Подробный | Дополнительный контекст, например категория раздела при переходе, количество совпадений при поиске и детали переопределения профиля |
Две настройки управляют функциями ИИ, которые отправляют содержимое терминала во внешний сервис. Обе по умолчанию выключены.
| Настройка | По умолчанию | Описание |
|---|---|---|
| Разрешить объяснение кода | Выкл. | Разрешает отправку блоков кода ИИ для краткого объяснения. |
| Разрешить суммаризацию | Выкл. | Разрешает автоматическое суммаризация длинных ответов ИИ. |
Когда вы вызываете функцию, защищенную конфиденциальностью, пока она отключена, Terminal Access сообщает, что функция отключена, и объясняет, как её включить. Чтобы включить, откройте Настройки NVDA > Настройки терминала > Конфиденциальность и установите флажок.
Откройте настройки из меню NVDA > Параметры > Настройки > Настройки терминала.
| Настройка | Описание |
|---|---|
| Эхо клавиш | Слышать набираемые символы в терминалах, произносимые с учетом уровня пунктуации и со свернутыми повторяющимися символами ("тире 4 раза"). См. примечание ниже о том, как это связано с собственным эхо-воспроизведением NVDA. |
| Отслеживание курсора | Объявлять перемещения курсора. |
| Уровень пунктуации | Управлять подробностью символов (Нет, Некоторые, Большинство, Все). |
| Отступы | Автоматически объявлять отступы для кода. |
| Звуковые сигналы ошибок | Воспроизводить тоны на строках с ошибками/предупреждениями при навигации. Включено по умолчанию. |
| Звуковые сигналы ошибок в тихом режиме | Воспроизводить тоны ошибок/предупреждений при событиях каретки, когда активен тихий режим. Выключено по умолчанию. |
| Тоны активности вывода | Воспроизводить два восходящих тона (600+800 Гц), когда появляется новый вывод программы. Выключено по умолчанию. |
| Задержка активности вывода | Минимальный интервал между тонами активности в миллисекундах (от 100 до 10000, по умолчанию 1000). |
Панель настроек также содержит раздел "Конфликты жестов NVDA" для отключения конфликтующих жестов и раздел "Профили приложений" для управления профилями.
В NVDA есть две собственные настройки эхо-воспроизведения набора в меню NVDA > Параметры > Настройки > Клавиатура: "Произносить набираемые символы" и "Произносить набираемые слова". Эхо клавиш Terminal Access и эти настройки — не одно и то же, и одновременно работает только одно из них:
Короче говоря: для полноценного использования терминала оставьте обе настройки эхо-воспроизведения NVDA выключенными и используйте эхо клавиш Terminal Access; включайте настройки NVDA, только если хотите одинаковое эхо во всех приложениях, и в этом случае эхо клавиш Terminal Access не работает.