Go библиотека для работы с VT100 escape-последовательностями, предоставляющая удобный интерфейс для управления цветом, стилями текста, курсором и очисткой экрана в терминальных приложениях.
Find a file
2026-01-01 16:36:40 +03:00
example Добавил готовых цветов 2026-01-01 16:36:40 +03:00
color_string.go init 2026-01-01 16:15:17 +03:00
colors.go Добавил готовых цветов 2026-01-01 16:36:40 +03:00
cursor.go init 2026-01-01 16:15:17 +03:00
erase.go init 2026-01-01 16:15:17 +03:00
go.mod init 2026-01-01 16:15:17 +03:00
LICENSE init 2026-01-01 16:15:17 +03:00
README.md init 2026-01-01 16:15:17 +03:00
sequence.go init 2026-01-01 16:15:17 +03:00
styles.go init 2026-01-01 16:15:17 +03:00
vt100.go init 2026-01-01 16:15:17 +03:00

VT100

Go Version License

Go библиотека для работы с VT100 escape-последовательностями, предоставляющая удобный интерфейс для управления цветом, стилями текста, курсором и очисткой экрана в терминальных приложениях.

Возможности

  • Управление цветом текста и фона:

    • Базовые 16 цветов (стандартные и яркие)
    • Поддержка 256 цветов
    • RGB цвета (16.7 миллионов цветов)
  • Стили текста:

    • Жирный, курсив, подчеркивание
    • Мерцание, инверсия, скрытый текст
    • Зачеркивание
  • Управление курсором:

    • Позиционирование курсора
    • Перемещение в 4 направлениях
    • Возврат в начало
  • Очистка экрана и строк:

    • Полная очистка экрана
    • Частичная очистка (от курсора, до курсора)
    • Очистка строк

Установка

go get go.neonxp.ru/vt100

Быстрый старт

package main

import (
    "fmt"
    "go.neonxp.ru/vt100"
)

func main() {
    // Жирный красный текст
    fmt.Print(vt100.Bold, vt100.FgColor(vt100.Red))
    fmt.Println("Привет, мир!")
    fmt.Print(vt100.ResetAll) // Сброс всех стилей
    
    // Перемещение курсора
    vt100.Cursor(10, 5).Print()
    fmt.Print("Курсор в позиции 10,5")
    
    // Очистка экрана
    vt100.EraseDisplay.Print()
}

Примеры использования

Работа с цветами

// Базовые цвета
fmt.Print(vt100.FgColor(vt100.Blue), "Синий текст", vt100.ResetAll())
fmt.Print(vt100.BgColor(vt100.Yellow), "Желтый фон", vt100.ResetAll())

// 256 цветов
fmt.Print(vt100.FgColor256(128), "256-цветный текст", vt100.ResetAll())

// RGB цвета
fmt.Print(vt100.BgColorRGB(255, 0, 128), "RGB фон", vt100.ResetAll())

Стили текста

styles := map[string][]vt100.Sequence{
    "Жирный":      {vt100.Bold, vt100.ResetBold},
    "Курсив":      {vt100.Italic, vt100.ResetItalic},
    "Подчеркнутый": {vt100.Underline, vt100.ResetUnderline},
    "Мерцающий":   {vt100.Blinking, vt100.ResetBlinking},
}

for name, seqs := range styles {
    fmt.Println(seqs[0], name, seqs[1])
}

Управление курсором

// Переместить курсор в позицию (строка, колонка)
vt100.Cursor(10, 20).Print()

// Перемещение относительно текущей позиции
vt100.CursorUp(5).Print()    // Вверх на 5 строк
vt100.CursorDown(3).Print()  // Вниз на 3 строки
vt100.CursorLeft(2).Print()  // Влево на 2 колонки
vt100.CursorRight(4).Print() // Вправо на 4 колонки

// Возврат в начало
vt100.CursorHome.Print()

Очистка

// Полная очистка экрана
vt100.EraseDisplay.Print()

// Очистка от курсора до конца экрана
vt100.EraseFromCursorUntilEndOfScreen.Print()

// Очистка текущей строки
vt100.EraseInLine.Print()

// Очистка от курсора до конца строки
vt100.EraseFromCursorToEndOfLine.Print()

Доступные цвета

Базовые цвета

  • Black, Red, Green, Yellow
  • Blue, Magenta, Cyan, White
  • BrightBlack, BrightRed, BrightGreen, BrightYellow
  • BrightBlue, BrightMagenta, BrightCyan, BrightWhite

Структура проекта

vt100/
├── vt100.go          # Основные константы и функции
├── sequence.go       # Тип Sequence и его методы
├── colors.go         # Работа с цветами
├── styles.go         # Стили текста
├── cursor.go         # Управление курсором
├── erase.go          # Функции очистки
├── color_string.go   # Автогенерируемый файл для строкового представления цветов
└── example/
    └── main.go       # Пример использования

Запуск примера

cd example
go run main.go

Пример демонстрирует все возможности библиотеки:

  • Стили текста
  • Базовые цвета
  • 256 цветов
  • RGB цвета
  • Управление курсором

Лицензия

Этот проект распространяется под лицензией GNU GPL v3. Подробности см. в файле LICENSE.

Совместимость

Библиотека работает с любыми терминалами, поддерживающими ANSI/VT100 escape-последовательности, включая:

  • Linux терминалы
  • macOS Terminal
  • Windows Terminal
  • iTerm2
  • И многие другие