No description
Find a file
Андрей Кудлай e4875eb134
Update main.js
Fix moving selected text
2026-05-17 01:47:21 +03:00
docs Add GitHub Pages documentation page 2026-05-17 01:30:49 +03:00
LICENSE Initial commit 2026-04-30 21:43:54 +03:00
main.js Update main.js 2026-05-17 01:47:21 +03:00
manifest.json Bump version to 2.3.1 2026-05-17 01:38:45 +03:00
README.md Expand README with detailed descriptions and hotkeys 2026-05-15 12:34:11 +03:00
styles.css Add files via upload 2026-04-30 21:45:25 +03:00
versions.json Add version mapping for 2.3.1 2026-05-17 01:39:45 +03:00

Structure Commander v2.3.0

Structure Commander — плагин для Obsidian, который превращает Markdown-документ в управляемую структуру. Не просто «ещё одна панель заголовков», а рабочий инструмент для длинных заметок, технических заданий, конспектов, проектной документации и любых текстов, где разделы нужно двигать, сворачивать, повышать, понижать, нумеровать и экспортировать без ручной хирургии по строкам.

Если встроенная структура Obsidian показывает дерево, Structure Commander даёт с этим деревом работать: переставлять ветки, менять уровни, сворачивать нужные части, быстро показывать документ до выбранной глубины и выносить отдельные ветки в самостоятельные .md-файлы.

Что умеет

  • Перемещать Markdown-ветки вверх и вниз вместе со всеми вложенными заголовками и текстом.
  • Повышать и понижать уровень текущей ветки с сохранением внутренней иерархии.
  • Работать не только с заголовками, но и с обычным текстом, маркированными и нумерованными списками.
  • Сворачивать и разворачивать текущую ветку.
  • Показывать документ до H1, H2, H3, H4, H5 или H6.
  • Показывать только реально существующие уровни заголовков в меню «Показать до».
  • Полностью разворачивать документ через «Показать всё».
  • Перенумеровывать заголовки и списки.
  • Удалять нумерацию.
  • Заменять нумерацию на emoji-цифры.
  • Исправлять пропуски уровней, например H1 → H3.
  • Экспортировать текущую ветку в отдельную Markdown-заметку.
  • Показывать структуру в боковой панели.
  • Добавлять компактную панель инструментов над редактором.
  • Показывать текущие хоткеи прямо в tooltip, контекстном меню и меню тулбара.
  • Быстро назначать хоткеи из настроек плагина или через ПКМ по кнопке тулбара.

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

Откройте Markdown-заметку, поставьте курсор внутрь нужного раздела и используйте хоткеи:

Действие Хоткей
Ветка выше Alt+Shift+↑
Ветка ниже Alt+Shift+↓
Повысить ветку Alt+Shift+←
Понизить ветку Alt+Shift+→
Свернуть ветку Alt+←
Развернуть ветку Alt+→

Эти же действия доступны через:

  • контекстное меню редактора;
  • панель инструментов над редактором;
  • боковую панель структуры;
  • палитру команд Ctrl+P;
  • ribbon-иконку Structure Commander.

Хоткеи Alt+←/→ выбраны намеренно вместо Ctrl+Shift+←/→: Ctrl+Shift+←/→ конфликтуют со стандартным выделением текста по словам в любом текстовом поле. Потому что даже хоткеям приходится жить в обществе, увы.

Основная идея

Ветка — это ближайший заголовок выше курсора и всё его содержимое до следующего заголовка того же или более высокого уровня.

Пример:

# Раздел 1

Текст раздела.

## Подраздел 1.1

Текст подраздела.

## Подраздел 1.2

Текст подраздела.

# Раздел 2

Если курсор стоит внутри Раздел 1, команда «Ветка ниже» перенесёт весь блок Раздел 1 вместе с Подраздел 1.1 и Подраздел 1.2 ниже Раздел 2.

Если курсор стоит внутри Подраздел 1.1, команда работает только с этой вложенной веткой.

Команды

Все команды доступны через палитру Ctrl+P. Названия команд начинаются с Structure Commander.

Команда Действие
Открыть Structure Commander открыть общий пульт команд
Открыть настройки горячих клавиш перейти к штатным настройкам Hotkeys
Открыть боковую панель структуры справа открыть панель справа
Открыть боковую панель структуры слева открыть панель слева
Открыть боковую панель структуры снизу открыть панель снизу
Скрыть/показать боковую панель структуры переключить боковую панель
Скрыть/показать панель инструментов над редактором переключить toolbar над редактором
Свернуть все заголовки свернуть весь документ
Развернуть все заголовки / Показать всё полностью развернуть документ
Показать документ до H1…H6 свернуть документ ниже выбранного уровня
Поставить текущему заголовку уровень H1…H6 изменить только строку текущего заголовка
Поставить заголовку ветки H1…H6 изменить уровень корня ветки и сдвинуть вложенные уровни
Свернуть текущую ветку свернуть ветку под курсором
Развернуть текущую ветку развернуть ветку под курсором
Переключить сворачивание текущей ветки fold/unfold для текущей ветки
Показать текущую ветку до глубины 1…6 развернуть ветку только до выбранной глубины
Повысить только текущий заголовок изменить только строку заголовка
Понизить только текущий заголовок изменить только строку заголовка
Повысить (заголовок/текст/список) универсальное повышение строки или ветки
Понизить (заголовок/текст/список) универсальное понижение строки или ветки
Скопировать текущую ветку скопировать ветку в буфер обмена
Экспортировать ветку в .md сохранить ветку отдельным файлом
Ветка выше переместить ветку выше
Ветка ниже переместить ветку ниже
Исправить пропуски уровней нормализовать H-иерархию
Перенумеровать структуру пронумеровать заголовки и/или списки
Удалить нумерацию убрать существующие числовые префиксы
Заменить нумерацию на emoji-цифры заменить нумерацию на emoji-формат

Универсальное повышение и понижение

Команды Повысить и Понизить работают как лестница между типами строк.

Понижение:

H1 → H2 → H3 → H4 → H5 → H6 → текст → - список → 1. список → 1) список → а) список

Повышение:

а) список → 1) список → 1. список → - список → текст → H6 → H5 → H4 → H3 → H2 → H1

На заголовке команда меняет всю ветку. На обычном тексте или списке команда меняет текущую строку. При выделении нескольких строк операция применяется к выделенному диапазону одной транзакцией, а нумерация внутри выделения пересчитывается.

Контекстное меню редактора

ПКМ в Markdown-редакторе добавляет компактные верхнеуровневые пункты с подменю:

Развернуть/свернуть ▸
   ├─ Развернуть      Alt+→
   ├─ Свернуть        Alt+←
   ├─ Показать/скрыть панель структуры
   └─ Показать/скрыть панель инструментов

Показать до ▸
   ├─ H1
   ├─ H2
   ├─ H3
   ├─ ...
   └─ Показать всё

Уровень | Перенос ▸
   ├─ Повысить        Alt+Shift+←
   ├─ Понизить        Alt+Shift+→
   ├─ Вверх           Alt+Shift+↑
   ├─ Вниз            Alt+Shift+↓
   ├─ Понизить до ▸   H2, H3, H4, ...
   └─ Повысить до ▸   H1, H2, H3, ...

Нумерация ▸
   ├─ Перенумеровать…
   ├─ Удалить нумерацию…
   ├─ Emoji-цифры…
   └─ Исправить пропуски уровней

Экспорт ветки…

В меню «Показать до» выводятся только уровни заголовков, которые реально есть в документе. Если в файле есть только H2 и H4, меню не будет притворяться, что H1 и H3 существуют. Мелочь, но цивилизация держится на таких мелочах.

В подменю «Понизить до» и «Повысить до» показываются только допустимые уровни: плагин не даст сдвинуть ветку так, чтобы вложенные заголовки вышли за пределы H1…H6.

Панель инструментов над редактором

Над Markdown-редактором появляется компактная панель:

[↑] [↓] [←] [→] [] [+] [Показать: H1 ▾] [H? ▾] [№] [×]
Кнопка Действие
ветка выше
ветка ниже
повысить ветку / строку
понизить ветку / строку
свернуть текущую ветку
+ развернуть текущую ветку
Показать: Hn ▾ выбрать глубину показа документа и выполнить «Показать всё»
H? ▾ изменить уровень текущего заголовка или всей ветки
открыть перенумерацию
ПКМ по меню: перенумеровать, удалить нумерацию, emoji-цифры, исправить уровни
× скрыть toolbar

Tooltip у кнопок показывает действие и текущий хоткей. Если хоткей изменён в настройках Obsidian, tooltip подтянет актуальное значение.

ПКМ по кнопкам ↑ ↓ ← → + открывает быстрое назначение хоткея:

  • нажать ПКМ по кнопке;
  • выбрать «Назначить хоткей»;
  • нажать нужную комбинацию;
  • сохранить.

Поддерживаются обычные клавиши, стрелки, F1…F12, Numpad1…Numpad9, Enter, Tab, модификаторы Ctrl, Alt, Shift, Meta.

Боковая панель структуры

Панель структуры похожа на штатную outline-панель Obsidian, но добавляет управляющие действия.

В панели есть:

  • поиск по заголовкам;
  • фильтр глубины: До H1, До H2, До H3, До H4, До H5, Все;
  • счётчик показано / всего;
  • подсветка активного заголовка по позиции курсора;
  • кнопка обновления;
  • кнопка закрытия панели;
  • контекстное меню для каждого заголовка.

ПКМ по заголовку в панели:

Перейти
Свернуть ветку
Развернуть ветку
Ветку выше
Ветку ниже
Повысить
Понизить
Экспорт ветки…

Уровни в панели передаются визуально: отступом, жирностью, наклоном и цветом. Подписи H1, H2, H3 не повторяются в каждой строке, чтобы панель не выглядела как бухгалтерская ведомость после неудачного импорта.

Панель обновляется при смене активного файла, изменении файла и смене активного редактора. Чтение файла защищено от устаревших async-результатов и обновляется с debounce.

Настройки

В настройках плагина доступны:

  • полный список команд с текущими хоткеями;
  • быстрое назначение хоткея через кнопку «Изменить»;
  • очистка хоткея через ×;
  • кнопка «Открыть Hotkeys» для штатного редактора Obsidian;
  • глубина боковой панели по умолчанию;
  • открытие боковой панели справа, слева или снизу;
  • включение/выключение toolbar над редактором;
  • папка экспорта по умолчанию;
  • сброс настроек.

Плагин видит коллизии хоткеев внутри Obsidian. Глобальные перехваты Windows, macOS или других приложений изнутри Obsidian проверить нельзя. Прекрасный мир, где клавиши принадлежат всем и никому.

Экспорт ветки

Команда Экспорт ветки… сохраняет текущую ветку в отдельный Markdown-файл.

Окно экспорта позволяет выбрать:

  • сохранить рядом с текущей заметкой;
  • сохранить в указанную папку;
  • спрашивать каждый раз;
  • открыть файл после экспорта;
  • привести корневой заголовок экспортируемой ветки к H1.

Имя файла берётся из заголовка ветки. Запрещённые символы очищаются. Если файл уже существует, добавляется суффикс 2, 3, 4 и так далее.

Последний выбранный режим сохраняется. Повторный экспорт можно подтвердить клавишей Enter.

Перенумерация

Окно перенумерации поддерживает три области:

  • весь документ;
  • текущая ветка;
  • выделенный фрагмент.

И три цели:

  • только заголовки;
  • только списки;
  • заголовки и списки.

Стили:

1. / 1.1. / 1.1.1.
1⃣ / 1⃣.1️⃣ / 1⃣.1️⃣.1️⃣

Перед применением показывается предпросмотр: первые 8 изменений в формате было → станет и общее количество изменяемых строк.

Удаление нумерации снимает числовые, emoji и некоторые визуальные префиксы. Для списков удаление нумерации переводит их в маркированный список.

Транзакционность и Undo

Массовые операции применяются одной транзакцией редактора:

  • перемещение ветки;
  • перемещение выделенного диапазона;
  • повышение/понижение;
  • нормализация уровней;
  • перенумерация;
  • удаление нумерации;
  • emoji-нумерация.

Ctrl+Z откатывает операцию одним действием. Не пятьюдесятью микрошагами, как любят делать инструменты, притворяющиеся помощниками.

Перемещение реализовано через атомарную перестановку строк. Оно не должно:

  • добавлять лишние пустые строки;
  • склеивать заголовки;
  • терять выделение строк при повторном перемещении;
  • разворачивать свёрнутую ветку после перемещения;
  • ломаться на первой или последней ветке;
  • ломаться на файле без финального перевода строки.

Ограничения

  • Поддерживаются ATX-заголовки: #, ##, ###, ####, #####, ######.
  • Markdown-заголовки H1…H6 — это предел, H7 не существует, как бы нам ни хотелось иерархического безумия.
  • Setext-заголовки с подчёркиванием === / --- не поддерживаются.
  • Заголовки внутри fenced code blocks (``` или ~~~) игнорируются.
  • Глобальные хоткеи Windows / macOS / других приложений не проверяются.
  • На мобильных устройствах физические хоткеи обычно бесполезны, используйте toolbar и меню.

Установка вручную

  1. Закрыть Obsidian.
  2. Создать папку:
.obsidian/plugins/structure-commander/
  1. Скопировать в неё:
main.js
manifest.json
styles.css
  1. Открыть Obsidian.
  2. Перейти в Настройки → Community plugins.
  3. Включить Structure Commander.

Состав релиза

Для релиза GitHub должны быть приложены отдельные assets:

main.js
manifest.json
styles.css

Не только Source code (zip) и не только архив. Obsidian Community Plugins проверяет именно отдельные release assets. Да, ещё одна церемония, потому что иначе скучно.

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

minAppVersion: 1.0.0.

Плагин не требует внешних сервисов, аккаунтов, сетевых запросов или отдельной базы данных. Работает внутри текущего vault и меняет только открытые Markdown-файлы по команде пользователя.

License

MIT