Monaco Editor

Бесплатно
Открытый исходный код

Сайт: microsoft.github.io/monaco-editor

Monaco Editor — это текстовый редактор кода, реализованный на JavaScript и предназначенный для встраивания в веб-приложения. Он был разработан как отдельная библиотека, использующая компоненты, похожие на те, что применяются в интегрированной среде разработки Visual Studio Code. Monaco предоставляет средства для редактирования исходного кода с поддержкой подсветки синтаксиса, автодополнения, свёртывания кода и других функций, характерных для полноценных редакторов кода, при этом ориентирован на работу в браузерной среде.

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

  • Подсветка синтаксиса: поддержка множества языков и возможность добавления собственных грамматик.
  • Автодополнение: механизм подсказок и предложений на основе контекста кода.
  • Свертывание и развертывание блоков: управление видимостью блоков кода и навигация по структуре документа.
  • Поддержка нескольких курсоров: одновременное редактирование в нескольких местах документа.
  • Форматирование кода: интеграция форматтеров и инструментов стилизации кода.
  • Интеграция с языковыми серверами: взаимодействие с внешними сервисами для анализа и проверок кода.
  • Поиск и замена: расширенные операции поиска, поддержка регулярных выражений и навигации по результатам.
  • Настраиваемые сочетания клавиш: возможность переназначения команд и использования привычных хоткеев.
  • Темизация и стилизация: поддержка пользовательских тем и изменения визуальных настроек редактора.
  • Масштабируемость: оптимизации для работы с большими файлами и минимизация затрат памяти в браузере.
Подробнее