Редактор кода: клавиши, поле номеров, подсветка и автодополнение
Редактор на странице скриптов — это прозрачное текстовое поле поверх синхронизированного поля номеров и цветного слоя. Он добавляет номера строк, клавиши отступа, синтаксические цвета и список автодополнения API, не притягивая библиотеку редактора.
Senzoukria · Документация · Обновлено: сентябрь 2026
Где найти
- Где
- Страница скриптов → центральная область редактирования
- Единица отступа
- Два пробела — как в примерах скриптов и в выводе ассистента
- Проверка орфографии
- Выключена
- Источник автодополнения
- lib.* в JavaScript, of.* в Python — какой список предложить, решает язык
- Доступное имя
- «Исходный код скрипта»
Что он делает
Обычное текстовое поле теряет Tab на переход фокуса, не показывает номеров строк и не даёт горячих клавиш — трёх вещей, которые становятся важны, как только вы пишете настоящий скрипт. Этот редактор сохраняет родное поведение браузера при вводе (выделение, отмена, IME, доступность) и добавляет вокруг недостающее: поле номеров, прокручивающееся вместе с текстом, цветной слой под ним и список автодополнения.
Поле номеров помечает строку курсора, а строка, о которой сообщил неудачный прогон, подсвечивается красным, поэтому «Строка 23» из консоли указывает на то, что видно глазами.
Клавиши
| Клавиша | По умолчанию | На что влияет |
|---|---|---|
| Tab | вставить два пробела | При выделении нескольких строк вместо этого сдвигает весь блок. |
| Shift+Tab | — | Убирает один уровень отступа у строки или выделенного блока. |
| Enter | сохранить отступ | Сохраняет отступ текущей строки и добавляет уровень после строки, открывающей блок. |
| Ctrl/Cmd+S | — | Сохраняет скрипт. |
| Ctrl/Cmd+Enter | — | Запускает скрипт на тестовых данных. |
| Стрелки вверх / вниз | — | Перемещают по списку автодополнения, пока он открыт. |
| Enter или Tab (список открыт) | — | Принимает подсвеченное дополнение, заменяя набранный префикс. |
| Escape | — | Закрывает список автодополнения без вставки. |
Подсветка и автодополнение
- Токенизатор идёт одним проходом, символ за символом, и выдаёт классы CSS, а не цвета, поэтому палитра живёт вместе с дизайн-токенами продукта и следует теме.
- Наборы ключевых слов свои у каждого языка: у JavaScript, Python и C++ они разные.
- Список автодополнения предлагает расчётные помощники, общие для обоих языков, — sma, ema, wilder, stdev, highest, lowest, rsi и atr, — плюс построители выходов объявленного языка.
- Построители выходов JavaScript: line, histogram, markers, levels, table и panel. В Python те же шесть плюс bands, одиночные marker() и level(), и первым аргументом берётся время, а не бары.
- Каждое дополнение переписано с кода, который его реализует, а не по памяти: неверное дополнение учило бы несуществующему API.
Ограничения и подводные камни
- Прокрутка намеренно закрывает список автодополнения — абсолютно позиционированный список иначе указывал бы на другую строку кода.
- Ни сворачивания блоков, ни мультикурсора, ни языкового сервера: это намеренно маленький редактор, и он не добавляет веса сборке.
- Цветной слой и текстовое поле обязаны иметь одинаковые метрики. Если переопределить шрифты или межбуквенные интервалы в своей теме, цвета могут уехать относительно набранного текста.
Связанные страницы
- Обзор страницы скриптов
- Консоль скрипта и предпросмотр выходов
- Скриптинг: как написать индикатор (JavaScript)
- Скриптинг
Эта страница на других языках
Частые вопросы
- Почему автодополнение предлагает of.* в одном скрипте и lib.* в другом?
- Список следует объявленному языку скрипта. Скрипты на JavaScript строят выходы через lib, на Python — через of, и предложить оба значило бы учить половине API, которой нет в редактируемом файле.
- Можно ли использовать отступ в четыре пробела?
- Набрать можно, но Tab вставляет два пробела — именно столько дают примеры скриптов и ассистент. Смешение двух вариантов в одном файле Python — обычный источник ошибки отступа.
- Проверяет ли редактор код по мере ввода?
- Нет. Проверка происходит при запуске: прогон сообщает строку с ошибкой, и затем эта строка подсвечивается в поле номеров.