Руководство пользователя

Подсказки команд

Подсказки команд — это список вариантов, который VelaTerm строит на основе определений автодополнения вашей оболочки и показывает, пока вы вводите команду в обычной терминальной сессии. Команда остаётся в обычной строке ввода терминала, а выбранная подсказка вставляется в неё без выполнения. Эта функция не использует модель ИИ.

Подсказки доступны в macOS и Linux. В Windows эта функция сейчас отключена (см. раздел «Windows» ниже).

Настройки и управление

Параметр «Подсказки команд» (Настройки ▸ Терминал) предлагает три режима:

  • Автоматически (по умолчанию): VelaTerm накапливает ввод около 25 мс, а затем запрашивает подсказки у оболочки; дальнейший ввод не перезапускает это ожидание. Если вы продолжаете печатать, пока запрос выполняется, для следующего запроса используется только последний ввод, а устаревшие результаты отбрасываются. Точное совпадение остаётся в списке.
  • По Tab: подсказки появляются только по нажатию Tab.
  • Выключены: список подсказок не показывается, а Tab сохраняет стандартное поведение оболочки.

Изменение сразу вступает в силу в открытых терминалах, а выбранный режим действует для всех клиентов, подключённых к одному и тому же серверу VelaTerm.

Клавиатура и мышь:

  • Клавиши ↑ и ↓ выбирают вариант; Page Up и Page Down перемещают по длинному списку.
  • Tab или щелчок мышью вставляет выбранный вариант.
  • Enter всегда передаётся оболочке и выполняет текущую команду в том виде, в каком она введена, не применяя подсказку.
  • Escape закрывает список.
  • Ctrl+Space запрашивает подсказки вручную.
  • Когда выделение не может сдвинуться дальше, клавиши ↑ и ↓ передаются оболочке. Поэтому ↑ на первом варианте вызывает предыдущую команду из истории.

Варианты упорядочены так: сначала точные совпадения, затем совпадения по началу, затем совпадения по подстроке и, наконец, остальные варианты, предложенные оболочкой. Среди точных совпадений и совпадений по началу первыми идут совпадения с учётом регистра; внутри каждой группы более короткие варианты идут раньше, а варианты одинаковой длины упорядочены по алфавиту.

В списке выделена часть каждого варианта, совпадающая с введённым текстом, и показано описание от оболочки, если оно есть; чтобы прочитать длинное описание, наведите указатель на вариант. При обновлении результатов список сохраняет положение прокрутки и выделение. После выбора подсказки список закрывается, в том числе когда вариант — это каталог, оканчивающийся на /. Чтобы увидеть следующий уровень каталогов, снова нажмите Tab. В режиме «Автоматически» список снова открывается при дальнейшем вводе.

Если вы изменили ввод до того, как вставка выполнена, VelaTerm дожидается нового результата от оболочки и вставляет вариант, только если оболочка по-прежнему его предлагает.

Поддержка оболочек

ОболочкаПодсказки
ZshСобственные виджеты автодополнения и compadd; используются уже имеющиеся у вас определения автодополнения.
Bash 4 и новееЗарегистрированные функции и спецификации автодополнения; если ничего не зарегистрировано — имена команд и файлов.
FishВарианты и описания из собственной команды complete -C.
PowerShell (pwsh) с PSReadLineСобственный механизм CommandCompletion.CompleteInput.
Bash 3.2 и другие оболочкиТолько стандартное поведение Tab; списка подсказок нет.

В macOS входит Bash версии 3.2. Чтобы пользоваться подсказками с Bash в macOS, назначьте оболочкой входа более новую версию Bash (например, установленную через Homebrew).

Подсказки доступны только в обычных терминальных сессиях. На сессии агентов эта функция не влияет.

Как загружается интеграция

VelaTerm загружает интеграцию с оболочкой при запуске терминала. Файлы запуска вашей оболочки никогда не изменяются, а заданная вами команда запуска по-прежнему выполняется после загрузки интеграции. Терминалы, запущенные до установки версии с этой функцией, нужно перезапустить.

  • Zsh загружает интеграцию через временные файлы запуска после ваших собственных файлов входа, а затем восстанавливает ZDOTDIR. В терминал ничего не вводится.
  • Bash запускается с временным файлом --rcfile, который сначала читает ваши файлы входа в обычном для Bash порядке (/etc/profile, затем первый найденный из ~/.bash_profile, ~/.bash_login и ~/.profile), а затем загружает интеграцию. В терминал ничего не вводится. От обычной оболочки входа остаются два отличия: shopt -q login_shell возвращает false, а ~/.bash_logout не выполняется при выходе из оболочки.
  • У Fish и PowerShell нет сопоставимого механизма для запуска, поэтому VelaTerm отправляет одну команду, которая загружает интеграцию при запуске оболочки; эта строка видна в начале нового терминала.

Политика выполнения PowerShell по-прежнему действует для сценария интеграции; VelaTerm её не обходит.

Подсказки приостанавливаются, пока выполняется команда или открыта полноэкранная программа, во время набора текста через метод ввода (IME) и при навигации по истории (Ctrl+R, Ctrl+S и клавиши со стрелками). Клавиши со стрелками никогда не запускают автоматический запрос, поэтому при повторных нажатиях ↑ вы продолжаете перебирать предыдущие команды. Если интеграция не активна или варианты не найдены, Tab сохраняет стандартное поведение.

Если запустить в терминале SSH или другую вложенную оболочку, интеграция в этой среде не устанавливается.

Windows

В Windows интеграция не загружается независимо от значения параметра, а сам параметр «Подсказки команд» скрыт. В терминалах cmd, Windows PowerShell, pwsh, Git Bash и WSL клавиша Tab работает стандартным образом. Функция остаётся отключённой, потому что для её загрузки пришлось бы вводить команду в каждый новый терминал, а каждый запрос запускал бы вспомогательные процессы, что замедляет ввод.

Ограничения

  • Варианты зависят от определений автодополнения, установленных для вашей оболочки. VelaTerm не предоставляет собственного каталога команд и не строит предположений на основе истории.
  • Некоторые сложные сценарии автодополнения Bash опираются на внутренние механизмы Readline, которые интеграция не может воспроизвести в точности.
  • Функции автодополнения могут запускать внешние программы и работать медленно. Список перестаёт ждать через две секунды, но всё ещё работающая функция оболочки не завершается принудительно; чтобы прервать её, нажмите Ctrl+C, как обычно.
  • Интеграция резервирует Ctrl+F12 для сбора вариантов и Ctrl+F11 для вставки выбранного варианта. Если конфигурация оболочки переназначает эти клавиши после запуска терминала, подсказки могут перестать работать. В Bash версий с 4.0 по 4.3 интеграция также встраивается в обработку клавиш Enter и Ctrl+J.
  • Описания предоставляет оболочка. Многие определения автодополнения Bash их не содержат, поэтому у таких вариантов описания нет.

Тестирование

Функция проверена в macOS с Zsh и Bash 5.2, а также в Linux с Bash, Zsh, Fish и PowerShell 7.4.