|
|
||
|---|---|---|
| docs | ||
| LICENSE | ||
| main.js | ||
| manifest.json | ||
| README.md | ||
| styles.css | ||
| versions.json | ||
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 и меню.
Установка вручную
- Закрыть Obsidian.
- Создать папку:
.obsidian/plugins/structure-commander/
- Скопировать в неё:
main.js
manifest.json
styles.css
- Открыть Obsidian.
- Перейти в
Настройки → Community plugins. - Включить
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