Go библиотека для работы с VT100 escape-последовательностями, предоставляющая удобный интерфейс для управления цветом, стилями текста, курсором и очисткой экрана в терминальных приложениях.
| example | ||
| color_string.go | ||
| colors.go | ||
| cursor.go | ||
| erase.go | ||
| go.mod | ||
| LICENSE | ||
| README.md | ||
| sequence.go | ||
| styles.go | ||
| vt100.go | ||
VT100
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,YellowBlue,Magenta,Cyan,WhiteBrightBlack,BrightRed,BrightGreen,BrightYellowBrightBlue,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
- И многие другие