Beim täglichen Schreiben mit hugo-cms.nvim sind ein paar Bausteine immer dabei. Eine kurze SEO-Checkliste vor dem Veröffentlichen, der Publishing-Loop und ein paar Stellen, an denen man sich verheddern kann.
SEO-Check vor dem Veröffentlichen
Bevor ich :Hugo draft von true auf false schalte, gehe ich kurz durch:
title, beschreibend und scanbar, unter ~60 Zeichendescriptionals Meta-Description, 120–160 Zeichen, nutzenorientiertslugpro Sprache gesetzt bei mehrsprachigen Posts, URL-sicher, klein, mit Bindestrichencover.imageundcover.alt, der Alt-Text in der jeweiligen Sprache passend- Mindestens ein
tagund einecategory, falls die Site Taxonomien nutzt - Interne Links über
{{< ref >}}oder{{< relref >}}, weil Hugo sie beim Build prüft und gebrochene Refs den Build sprengen - Bilder mit
altversorgt, nicht nur das Cover
Das Plugin hilft bei vielem davon, daran erinnern muss ich mich aber selbst.
Mein Publishing-Loop
Der typische Ablauf bis zum veröffentlichten Beitrag:
:Hugo newoder:Hugo resume, schreiben.:Hugo previewfürhugo servermit Browser auf der aktuellen Seite, baut bei jeder Änderung neu.- SEO-Check durchgehen, gegebenenfalls korrigieren.
:Hugo draftschaltet das Flag um, in allen Sprach-Files gleichzeitig.:Hugo publishfür Build und Deployment.
Stolperstellen
Ein paar Dinge, an denen ich anfangs hängen geblieben bin.
:help hugo-cms findet erstmal nichts. lazy.nvim mit cmd = "Hugo" lädt das Plugin lazy, also ist es vor dem ersten :Hugo-Aufruf nicht im runtimepath. Einmal :Hugo aufrufen oder :Lazy load hugo-cms.nvim, dann geht auch :help.
Geöffneter Buffer und Frontmatter-Änderung. Wenn ein Buffer offen und modified ist, schreibt hugo-cms.nvim seine Frontmatter-Änderung in den Buffer, nicht direkt auf die Platte. Vims „Datei wurde extern geändert"-Dialog feuert deshalb nicht. Speichern, wenn Du fertig bist.
Terminal-Split-Trenner. Die Splits für :Hugo preview und :Hugo publish nutzen die winbar als optische Trennung und Statuszeile. Mit laststatus=3 siehst Du eine klare Grenze zwischen Editor und Terminal, ohne winbar würde die globale Statusline drüberlaufen.
Abgeschnittene Pfade in :Hugo open. Die Picker-Spalte mit dem Pfad ist gekappt, lange Slugs werden mit … abgeschnitten. Was hinter den drei Punkten steht, ist nicht fuzzy-matchbar. Such nach dem, was Du siehst, oder pass PATH_COL_CAP in commands/open.lua an, wenn Du regelmäßig mehr Pfad brauchst.
Shortcode-Syntax im Beitrag darstellen. Wenn Du {{< ref >}} oder einen anderen Shortcode als Text im Markdown zeigen willst, reicht es nicht, ihn in Backticks zu setzen. Hugo wertet Shortcodes auch in Inline-Code aus und bricht beim Build mit „invalid number of arguments". Korrekt mit Escape-Syntax {{< ... >}} schreiben (das Plugin selbst fügt sie automatisch ein, wenn Du :Hugo media insert shortcode benutzt).