MameTips

Obsidianで「無題のファイル」を自動で削除する方法

Obsidianは「Cmd + N」で簡単に新規ノートを作成することができますが、やっぱりやめたいと思った場合にタブを閉じてもファイル自体は「無題のファイル」という名称で作成されてしまいます。毎回手動で削除するのが面倒だと思ったので、プラグインを自作してみました。

「無題のファイル」を自動で削除するプラグインを自作した

Cmd + Nで新規ノートを作成した際に、やっぱりやめようと思ってCmd + Wを実行しても、「無題のファイル」という名前のノートが作られてしまい、都度手動で削除する必要があります。

これが細かいようで結構面倒に感じてしまい、設定や既存のプラグインで削除するような方法を探しましたが見当たらず、プラグインを自作すれば簡単に実現できそう!ということで作ってみました。

Obsidianのメソッドにはタブを閉じるタイミングで発火するものが無かったため、何かしらノートを開いたタイミングで「無題のファイル」という名称のノートがあればそれを削除するというプラグインを作成しました。

タブを何も開いていない状態で「無題のファイル」を閉じてもすぐには削除されませんが、別のノートを開いたタイミングで削除されるようになります。

環境

下記の環境で動作確認を行っています。

  • macOS Sequoia 15.3
  • Obsidian 1.8.9

設定方法

私の環境では問題なく動作していますが、あくまで自作プラグインなので、利用は自己責任でお願いします。

ファイルの作成

まず、 /your-vault/.obsidian/plugins/ の中に delete-untitled というディレクトリを作成し、下記の3つのファイルを作成します。

.obsidian/plugins/delete-untitled
├── main.js
├── manifest.json
└── styles.css

main.js の中身は下記の通り。「無題のファイル」の部分は他の言語を使っている場合は異なると思うので、必要に応じて書き換えてください。

const obsidian = require("obsidian");
const target = "無題のファイル";

class DeleteUntitledPlugin extends obsidian.Plugin {
  async onload() {
    // アクティブなファイルの変更を監視
    this.registerEvent(
      this.app.workspace.on("file-open", async (file) => {
        if (file?.basename !== target) {
          // すべてのファイルから"無題のファイル"を探す
          const untitledFiles = this.app.vault
            .getMarkdownFiles()
            .filter((f) => f.basename === target);

          // 見つかった"無題のファイル"を処理
          for (const untitledFile of untitledFiles) {
            const content = await this.app.vault.read(untitledFile);
            // 無題のファイルの中身が空の場合だけ削除
            if (content.trim() === "") {
              await this.app.vault.delete(untitledFile);
            }
          }
        }
      })
    );
  }
}

module.exports = DeleteUntitledPlugin;

manifest.json の中身は下記の通り。

{
    "id": "delete-untitled",
    "name": "Delete Untitled",
    "version": "1.0.0",
    "minAppVersion": "0.15.0",
    "description": "自動的に無題のファイルを削除します",
    "author": "MameTips",
    "isDesktopOnly": false
}

style.css は空のファイルを作成してください。

プラグインの有効化

上記の通りファイルの作成が完了できたら、Obsidianを再起動してコミュニティプラグインの設定画面で下記のプラグインが追加され、有効になっていることを確認します。

obsidian-delete-untitled.png

この時、コミュニティプラグインに「Delete Untitled」が表示されない場合は、ファイル名やディレクトリが間違っている可能性があります。

課題

このプラグインでは、ノートを開いたタイミングですべてのノートを取得して、名称が「無題のファイル」でなおかつ内容が空だったら削除するという処理を走らせているため、ノートの数が増えてくると処理が重くなる可能性があります。

他の方法も試してみましたが上手く動かなかったので、時間がある時にまた見てみようと思います。(もし良い方法があれば教えて下さい)

まとめ

ファイル自動削除自体はちょっとした差かもしれませんが、こういう細かい仕様を自分でカスタマイズできるのはObsidianの良さの1つですね。

プラグインを活用するとObsidianの使い勝手が格段に変わってくるので、あまりプラグインを使っていないという方もぜひ活用してみてください。