VIM-подобный текстовый редактор
Find a file
2026-07-13 09:23:01 +03:00
.gitignore Added new funcs 2026-07-04 13:04:33 +03:00
ARCHITECTURE.md Added new funcs 2026-07-04 13:04:33 +03:00
commands.go Added new funcs 2026-07-04 13:04:33 +03:00
config.go Added new funcs 2026-07-04 13:04:33 +03:00
fetch.go Added new funcs 2026-07-04 13:04:33 +03:00
file.go Added new funcs 2026-07-04 13:04:33 +03:00
file_io.go Added new funcs 2026-07-04 13:04:33 +03:00
go.mod Added new funcs 2026-07-04 13:04:33 +03:00
go.sum Added new funcs 2026-07-04 13:04:33 +03:00
help.go Added new funcs 2026-07-04 13:04:33 +03:00
keybindings.go Fixed render 2026-07-13 09:23:01 +03:00
LICENSE Added new funcs 2026-07-04 13:04:33 +03:00
main.go Added new funcs 2026-07-04 13:04:33 +03:00
menu.go Added new funcs 2026-07-04 13:04:33 +03:00
model.go Fixed render 2026-07-13 09:23:01 +03:00
pdf.go Added new funcs 2026-07-04 13:04:33 +03:00
pdf_font.go Added new funcs 2026-07-04 13:04:33 +03:00
README.md Added new funcs 2026-07-04 13:04:33 +03:00
render.go Fixed render 2026-07-13 09:23:01 +03:00
search.go Added new funcs 2026-07-04 13:04:33 +03:00
syntax.go Fixed render 2026-07-13 09:23:01 +03:00
tzeentch.go Added new funcs 2026-07-04 13:04:33 +03:00
untitled.md Added new funcs 2026-07-04 13:04:33 +03:00
v-curl-ispravili-uyazvimost-25-letnej-davnosti.md Added new funcs 2026-07-04 13:04:33 +03:00

grimoir

Терминальный текстовый редактор в стиле Vim, написанный на Go.

Поддерживает Markdown с live preview, подсветку синтаксиса для 10 языков, встроенный файловый менеджер, экспорт в PDF с кириллицей, загрузку статей по URL и гибкую настройку через конфиг-файл.


Возможности

Редактор

  • Vim-режимы — NORMAL, INSERT, COMMAND, SEARCH с полным набором команд
  • Unicode — полная поддержка кириллицы и любых других символов при вводе
  • Undo / Redo — до 100 шагов (u / Ctrl+R)
  • Числовые префиксы5j, 3dd, 10G
  • Поиск/pattern с навигацией n/N, поиск символа f/t, парные скобки %
  • Замена:s/old/new/ и :s/old/new/g
  • Автосохранение — настраиваемый интервал

Markdown

  • Live preview — разделённый экран редактор + preview
  • Рендер — заголовки, списки, таблицы, blockquotes, code blocks с подсветкой, ссылки, bold/italic

Подсветка синтаксиса

Go, Python, JavaScript, TypeScript, Rust, C/C++, Java, SQL, Bash

Файловый менеджер

  • Дерево файлов с vim-навигацией
  • Открытие файлов прямо из дерева
  • Ctrl+B — показать/скрыть, Tab — переключить фокус

PDF экспорт

  • Встраивает системный шрифт с кириллицей — полноценный русский текст в PDF
  • Автоматический поиск шрифта (LiberationSans, DejaVu, Arial и др.)
  • Subset embedding — в PDF попадают только использованные глифы
  • Fallback — транслитерация если шрифт не найден

Загрузка статей

grimoir https://example.com/article
# или прямо в редакторе:
:fetch https://example.com/article

Скачивает страницу, извлекает основной контент, конвертирует в Markdown, сохраняет файл с именем из заголовка статьи.


Управление

Режимы

Клавиша Действие
i / a / A INSERT: вставить / после курсора / в конец строки
I / o / O INSERT: в начало / новая строка ниже / выше
Esc вернуться в NORMAL
: режим команд
/ поиск
? справка

Навигация

Клавиша Действие
h j k l ← ↓ ↑ →
w / b / e слово вперёд / назад / конец слова
0 / ^ / $ начало / первый символ / конец строки
gg / G начало / конец файла
42G перейти на строку 42
f{c} / F{c} найти символ вправо / влево
t{c} / T{c} до символа вправо / влево
; / , повторить f/t / в обратном направлении
% парная скобка ()[]{}

В INSERT режиме работают стрелки, Home, End, Delete.

Редактирование

Клавиша Действие
x удалить символ
dd / 3dd удалить строку / 3 строки
yy / p / P скопировать / вставить ниже / выше
u / Ctrl+R undo / redo

Команды

Команда Действие
:w сохранить
:w path сохранить копию
:saveas path сохранить как
:q / :q! / :wq выйти
:e path открыть файл
:new path новый файл
:N перейти на строку N
:s/old/new/g замена во всём файле
:fetch URL скачать статью
:export pdf экспорт в PDF
:export pdf path экспорт в указанный путь
:help / ? справка

Панели

Клавиша / Команда Действие
Ctrl+B показать / скрыть файловое дерево
Tab переключить фокус между панелями
< / > уменьшить / увеличить ширину панели
Пробел показать / скрыть preview (только .md)
:treewidth 30 установить ширину дерева
:previewwidth 45 установить ширину preview

Конфигурация

Конфиг ищется автоматически при запуске:

ОС Путь
Linux ~/.config/grimoir/grimoir.conf
macOS ~/Library/Application Support/grimoir/grimoir.conf
Windows %APPDATA%\grimoir\grimoir.conf

Также поддерживается локальный ./grimoir.conf в текущей директории — имеет наивысший приоритет.

Создать конфиг с дефолтными настройками:

./grimoir --write-config

Пример конфига

[settings]
tree_width    = 28
preview_width = 42
line_numbers  = true
tab_width     = 4
autosave      = 60
show_tree     = false
show_preview  = false

[keys]
quit           = ctrl+c
toggle_tree    = ctrl+b
focus_switch   = tab
panel_shrink   = <
panel_grow     = >
toggle_preview = " "
redo           = ctrl+r

Управление конфигом

:config show    — откуда загружен конфиг и текущие значения
:config paths   — список путей поиска
:config write   — записать дефолтный конфиг
:config reload  — перезагрузить без перезапуска

Настройки можно менять и на лету:

:set number / nonumber   — номера строк
:set tab_width=2         — ширина таба
:set autosave=30         — автосейв каждые 30 секунд
:set autosave=0          — выключить автосейв

Флаги запуска

grimoir [флаги] [файл или URL]

  -f path         файл для редактирования
  --config path   явный путь к конфиг-файлу
  --write-config  записать дефолтный конфиг и выйти

Сборка

Требования: Go 1.21+

go mod tidy
go build -ldflags="-s -w" -o grimoir

Зависимости:

Пакет Назначение
charmbracelet/bubbletea TUI фреймворк (Elm-архитектура)
charmbracelet/lipgloss стилизация вывода
charmbracelet/bubbles компоненты (viewport)

Вся остальная функциональность — подсветка синтаксиса, PDF генерация, TTF парсинг, INI парсер, HTML→Markdown конвертер — реализована без внешних зависимостей.