Wie der Blog hier mit Hugo läuft, habe ich an anderer Stelle beschrieben. Vieles davon sind kleine, wiederkehrende Schritte. Markdown öffnen, Frontmatter pflegen, Tags und Kategorien aktuell halten, Drafts umschalten, Server starten, deployen. Ich nutze neovim, also wollte ich das alles direkt aus dem Editor heraus machen.

Ein passendes Plugin habe ich nicht gefunden. Also habe ich hugo-cms.nvim geschrieben.

Worum es geht

hugo-cms.nvim ist ein „CMS" für Hugo, das in neovim lebt. Du registrierst Deine Hugo-Sites einmal und arbeitest von dort. Kein Sprung in den Dateimanager, kein zweites Terminal-Fenster, keine Web-Oberfläche.

Voraussetzung sind ein aktuelles neovim plus Hugo und ripgrep auf der Shell. snacks.nvim für Picker und Prompts zieht der Plugin-Manager als Abhängigkeit mit rein. Ich selbst arbeite mit LazyVim, wo snacks.nvim sowieso schon drin ist, also läuft hugo-cms.nvim da direkt rund. macOS und Linux sind getestet, Windows nicht.

Was es macht

Alles läuft über :Hugo mit Subkommandos. Die Befehle landen am besten auf Leader-Tasten, bei mir hängen :Hugo new, :Hugo open, :Hugo media und Co. unter <leader>h…, ein, zwei Anschläge und ich bin drin. Die Beispiel-Spec im README zeigt eine komplette Tastenbelegung.

:Hugo new legt einen neuen Beitrag aus einem Archetype an. Der Slug kommt aus dem Titel, der Pfad folgt einem Pattern, das Du pro Archetype festlegst. Du musst nicht jedes Mal überlegen, wo die Datei hin soll. :Hugo open ist der Picker über alle Beiträge, :Hugo resume springt zum zuletzt geöffneten Post zurück, auch über Neustart hinweg. Wer nur eine Phrase aus einem alten Beitrag im Kopf hat, findet ihn mit :Hugo search per Volltextsuche über content/.

:Hugo media ist die Mediathek. Bilder oder Anhänge ins Bundle importieren, am Cursor als Bild, Link oder Shortcode einfügen, Cover setzen, alles ohne Wechsel in den Dateimanager. :Hugo tags, :Hugo categories und :Hugo draft schalten Frontmatter-Felder per Picker um, synchron über alle Sprach-Versionen im Bundle, damit Übersetzungen nicht auseinanderlaufen.

:Hugo preview startet hugo server in einem Terminal-Split, öffnet die aktuelle Seite im Browser, baut bei jeder Änderung neu. Für das Deployment ruft :Hugo publish ein deploy.sh im Site-Root auf, das Du selbst pflegst. Habe ich bewusst so gelöst, weil Deployment bei jedem anders aussieht und ich es nicht in Plugin-Optionen pressen wollte.

Mehrsprachige Sites werden direkt unterstützt. Frontmatter-Operationen laufen automatisch über alle Sprach-Geschwister, Umbenennen und Löschen arbeiten auf dem Bundle als Ganzem, mit Opt-out auf einzelne Sprache.

Stand

hugo-cms.nvim ist am Wachsen. Was drin ist, läuft. Was noch fehlt, kommt schrittweise nach. README, Changelog und Roadmap stehen im Repo.

Wie das in der Praxis aussieht, steht in einer eigenen Reihe. Walkthrough vom Einrichten der Site übers Verwalten der Beiträge bis zu Mediathek, Vorschau und Deploy. Darauf aufgebaut Mehrsprachigkeit, Slugs und Cover und der Workflow mit SEO-Check und Stolperstellen.