Safe Filename

unlisted

by kfdov

Заменяет недопустимые символы в имени файла до того, как Obsidian его отклонит, добавляет номер при совпадении имён и сохраняет введённое имя в title.

Updated 7d agoMIT
View on GitHub

Safe Filename для Obsidian

Пишите в названии заметки что угодно — Вопрос: что дальше?, 12:30 / встреча, [[черновик]]. Плагин заменяет недопустимые символы до того, как Obsidian откажет в имени, и сохраняет введённый текст в свойство title.

Вы ввелиИмя файлаСвойства
Вопрос: что?Вопрос что.mdtitle: "Вопрос: что?"
Вопрос: что? (такой файл уже есть)Вопрос что 1.mdtitle: "Вопрос: что?"
пустое имя или новая заметка (Ctrl+N, Bases…)2026-10-05 14-30-12.md вместо «Без названия»—

Установка в любое хранилище (через BRAT)

  1. Настройки → Сторонние плагины → Обзор, найдите BRAT (Obsidian42 - BRAT), установите и включите.
  2. Палитра команд (Ctrl+P) → BRAT: Add a beta plugin for testing.
  3. Вставьте kfdov/obsidian-safe-filename → Add Plugin.
  4. Включите Safe Filename в списке сторонних плагинов.

BRAT сам подтягивает новые версии при запуске Obsidian.

Вручную, без BRAT

Скачайте main.js и manifest.json из последнего релиза в папку <хранилище>/.obsidian/plugins/safe-filename/ и включите плагин в настройках.

Где работает

  • заголовок в заметке и в шапке вкладки;
  • встроенные заметки — например, всплывающее окно Bases → Новый;
  • переименование файлов и папок в проводнике;
  • окна «Переименовать файл» и «Новый файл»;
  • переход по ссылке [[name?]] на несуществующую заметку: создаётся name.md с title: name?, а ссылка переписывается в [[name|name?]] во всех заметках — видимый текст не меняется, дублей нет;
  • создание файлов шаблонами и другими плагинами;
  • новые заметки, холсты и базы, которым Obsidian дал бы «Без названия» / «Untitled» (Ctrl+N, проводник, Bases, холст), получают имя по настройке «Имя по умолчанию».

Предупреждения Obsidian о недопустимом имени при наборе скрываются (отключается в настройках).

Что записывается в свойства

  • title — то, что вы ввели, если имя пришлось изменить (или всегда — настройка).
  • aliases — по желанию.
  • Первый заголовок # … — по желанию (настройка «Синхронизировать с первым заголовком»): при каждом переименовании первая строка текста # … становится введённым именем со всеми символами (# Вопрос: что?), если её нет — добавляется. Если имя стёрто, свой заголовок убирается.
  • При следующем переименовании плагин убирает только то, что записал сам: title — если вы его не меняли, из aliases — только свою запись.

Настройки

Запрещённые символы (по умолчанию \ / : * ? " < > | # ^ [ ]), замена одним символом или похожими Unicode-символами (꞉ ? ∕), что добавлять при совпадении имени — номер (Заметка 1) или дату и время по формату moment.js (Заметка 1005143012 при формате MMDDHHmmss), разделитель, имя по умолчанию — для новых файлов и пустого ввода (по умолчанию {{date}} → 2026-10-05 14-30-12, можно Заметка {{date:HH-mm}} и т.п.), свойство для исходного имени, поведение битых ссылок.

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

Плагин перехватывает внутренние методы Obsidian (проверено на 1.13.7). После крупного обновления Obsidian что-то может перестать срабатывать — тогда стоит обновить плагин.

Разработка

npm test

Тесты запускают плагин на имитации внутренностей Obsidian (tests/obsidian-mock.js) — сборка не нужна, main.js — исходник и есть.

Выпуск новой версии

  1. Поднять версию в manifest.json, package.json и добавить её в versions.json.
  2. Закоммитить и выпустить релиз (тег = версия, без v):
gh release create 1.5.1 main.js manifest.json --title 1.5.1 --notes "Что изменилось"

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.