<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>VSCode on Natenoms Blog</title><link>https://natenom.de/tags/vscode/</link><description>Recent content in VSCode on Natenoms Blog</description><generator>Hugo -- gohugo.io</generator><language>de</language><copyright/><lastBuildDate>Tue, 09 Jan 2024 21:51:16 +0100</lastBuildDate><atom:link href="https://natenom.de/tags/vscode/index.xml" rel="self" type="application/rss+xml"/><item><title>Mein Hugo Helper Python Script und was es tun kann</title><link>https://natenom.de/2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/</link><pubDate>Tue, 09 Jan 2024 21:51:16 +0100</pubDate><guid>https://natenom.de/2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/</guid><description>&lt;p>Alle meine Webseiten werden mit Hilfe von Hugo statisch generiert. Für die Arbeit mit Hugo nutze ich schon länger ein eigenes Python-Script, das mir einige Arbeit abnimmt.&lt;/p>
&lt;p>Vor ein paar Tagen hat mich jemand gefragt, ob ich das Script nicht öffentlich machen könnte und ich habe das zum Anlass genommen, da mal einige Dinge zu verschönern, damit auch andere Menschen damit etwas anfangen können.&lt;/p></description><content:encoded><![CDATA[<p>Alle meine Webseiten werden mit Hilfe von Hugo statisch generiert. Für die Arbeit mit Hugo nutze ich schon länger ein eigenes Python-Script, das mir einige Arbeit abnimmt.</p>
<p>Vor ein paar Tagen hat mich jemand gefragt, ob ich das Script nicht öffentlich machen könnte und ich habe das zum Anlass genommen, da mal einige Dinge zu verschönern, damit auch andere Menschen damit etwas anfangen können.</p>
<div class="shortcode-notice warnung">
    <div class="shortcode-notice-title warnung">
        Warnung</div>
    <div class="notice-content"><p>Ich bin kein Programmierer und das Script hat vermutlich eine eher schlechte Qualität. Aber das stört mich nicht, denn es funktioniert (für mich).</p>
<p>Wenn es andere Menschen für sich nutzen können, dann ist das großartig. Wenn nicht, dann ist es auch okay.</p>
</div>
</div>


<p>Zur Installation des Scripts bitte in die <code>README.md</code> des Projekts schauen.</p>

<h2 id="konfiguration" data-numberify>Konfiguration<a class="anchor ms-1" href="#konfiguration"></a></h2>
<p>In der Konfigurationsdatei <code>~/.config/hgh/hgh.json</code> gibt es einen Abschnitt für allgemeine Einstellungen und dann je einen Abschnitt pro Website, die mit hgh verwaltet werden soll.</p>
<p>Hier ist hinterlegt, welcher Editor verwendet werden soll, wo die Basisverzeichnisse der Websites liegen, wo die <code>content</code>-Verzeichnisse, welcher Benutzernamen für rsync verwendet werden soll, usw.</p>

<h2 id="ein-alias-macht-das-leben-einfacher" data-numberify>Ein Alias macht das Leben einfacher<a class="anchor ms-1" href="#ein-alias-macht-das-leben-einfacher"></a></h2>
<p>Damit ich nicht dauernd <code>hgh.py --site blog</code> tippen muss, habe ich für jede meiner Websites in der <code>.bashrc</code> einen Alias erstellt:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>alias hgb<span style="color:#f92672">=</span><span style="color:#e6db74">`</span>hgh.py --site blog<span style="color:#e6db74">`</span>
</span></span><span style="display:flex;"><span>alias hgw<span style="color:#f92672">=</span><span style="color:#e6db74">`</span>hgh.py --site wiki<span style="color:#e6db74">`</span>
</span></span></code></pre></div><p>Somit kann ich z. B. mittels <code>hgb -cdb</code> ins Basisverzeichnis des Blogs wechseln.</p>

<h2 id="was-der-hugo-helper-hgh-für-mich-macht" data-numberify>Was der Hugo Helper (hgh) für mich macht<a class="anchor ms-1" href="#was-der-hugo-helper-hgh-für-mich-macht"></a></h2>

<h3 id="allgemeine-infos" data-numberify>Allgemeine Infos<a class="anchor ms-1" href="#allgemeine-infos"></a></h3>
<p>Mit <code>--help</code> gibt es eine hoffentlich hilfreiche Hilfe. 😁</p>
<p>Mit <code>hgh.py --sites</code> bekomme ich eine Liste aller Websites und der zugehörigen Basisverzeichnisse. Mit <code>--printconfig</code> wird die ganze Konfiguration ausgegeben.</p>

<h3 id="verzeichniswechsel" data-numberify>Verzeichniswechsel<a class="anchor ms-1" href="#verzeichniswechsel"></a></h3>
<p>Mit <code>-cdb</code> kann ich ins Basisverzeichnis einer Website wechseln, mit <code>-cdc</code> ins normale Content-Verzeichnis und mit <code>-cdl</code> in ein alternatives Content-Verzeichnis.</p>
<p>Letzeres nutze ich für verschiedene Blogbeiträge im Entwurfsmodus. Denn mein Blog besteht aus mehreren tausend Blogbeiträgen und das Bauen dauert sehr lange. Zum Schreiben von längeren Blogbeiträgen nutze ich dieses Verzeichnis und das Bauen dauert dann nur wenige Sekunden.</p>

<h3 id="kommentar-datei" data-numberify>Kommentar-Datei<a class="anchor ms-1" href="#kommentar-datei"></a></h3>
<p>Für Kommentare im Blog nutze mittlerweile eine eigene Implementation, bei der die Kommentare im Page Bundle innerhalb der Datei <code>comments.json</code> stehen.</p>
<p>Mit <code>hgh.py --site blog --create-comments-file</code> wird im aktuellen Verzeichnis eine <code>comments.json</code>-Datei erstellt, die bereits ein Skelett für einen Kommentar enthält. Dazu wird die Info ausgegeben, dass man noch im Front Matter <code>jsoncomments: true</code> eintragen muss. Da es hier im Blog nur sehr selten Kommentare gibt, vergesse ich das sonst und will auch nicht jedes Mal nachschauen, wie die Syntax eines Kommentars ist.</p>

<h3 id="neuer-blogbeitrag" data-numberify>Neuer Blogbeitrag<a class="anchor ms-1" href="#neuer-blogbeitrag"></a></h3>
<p>Diese Funktion nutze ich nur für meinen Blog und kann mit einem kurzen <code>hgb --create &quot;Ein neuer Blogbeitrag bla blub&quot;</code> gleich mehrere Aufgaben automatisieren:</p>
<ul>
<li>benötigte Verzeichnisse erstellen</li>
<li>Slug aus dem angegebenen Titel erzeugen</li>
<li>Page Bundle erstellen</li>
<li>Markdown-Datei für den Blogbeitrag erstellen und mit einem Template befüllen</li>
</ul>
<p>Details dazu, was alles gemacht wird, gibt es <a  href="/2024/01/neues-helferlein-fuer-hugo-erleichtert-das-bloggen/">in diesem Blogbeitrag</a>.</p>
<p>In der aktuellen Version des Scripts kann ich auch noch mit <code>--template</code> angeben, welches Template verwendet werden soll.</p>
<p>Mit <code>hgh.py --list-templates</code> wird eine Liste aller vorhandenen Templates angezeigt.</p>
<p>Wer das benutzen will, muss den Code dafür im Script anpassen, um alle notwendigen Variablen auch zu befüllen.</p>

<h3 id="tmux" data-numberify>Tmux<a class="anchor ms-1" href="#tmux"></a></h3>
<p>Bevor ich VSCode für die Bearbeitung meiner Websites nutzte, habe ich dafür den micro-Editor auf der Kommandozeile benutzt. Aus dieser Zeit stammt <code>--tmux</code>, das ein bestimmtes Layout in Tmux startet. Das habe ich aber schon länger nicht mehr verwendet und man müsste es für sich anpassen.</p>

<h3 id="lokale-vorschau-einer-website" data-numberify>Lokale Vorschau einer Website<a class="anchor ms-1" href="#lokale-vorschau-einer-website"></a></h3>
<p>Mittels <code>--hugo-server</code> wird der Blog lokal gebaut und auf dem einstellbaren Port zugänglich gemacht. Für das alternative Content-Verzeichnis gibt es <code>--hugo-server-light</code>.</p>
<p>Dazu kann man noch <code>--hugo-server-env</code> angeben, mit dem sich einstellen lässt, welche Umgebung Hugo verwendet. Default hier ist <code>development</code>. Ich nutze diese Funktion, um den umfangreichen Blog testweise so zu bauen, dass nur die Blogbeiträge der letzten Monate enthalten sind, was dann statt 35 Sekunden (für den gesamten Blog) nur ca. 3 Sekunden dauert.</p>

<h3 id="tags-kategorien-und-deren-häufigkeit" data-numberify>Tags, Kategorien und deren Häufigkeit<a class="anchor ms-1" href="#tags-kategorien-und-deren-häufigkeit"></a></h3>
<p>Was mir am Anfang bei Hugo im Vergleich zu WordPress sehr gefehlt hat, waren die Vorschläge für zu verwendende Tags und Kategorien in einem neuen Blogbeitrag.</p>
<p>Hierfür muss man mit dem Hugo Helper eine kleine &ldquo;Datenbank&rdquo; erstellen lassen. Dazu wird mit Hilfe von <code>find</code> und dem Tool <code>yq</code> je eine Liste aller bisher verwendeten Tags und Kategorien erstellt und dazu auch die Häufigkeit der Verwendung angegeben.</p>
<p>Diese &ldquo;Datenbank&rdquo; erstellt man mit <code>hgh.py --site blog --create-tags-categories-caches</code> und das dauert ein paar Sekunden. Im Ergebnis werden innerhalb von <code>~/.cache/hgh/</code> für jede Website zwei Dateien erzeugt:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>&gt; ls -1 .cache/hgh/
</span></span><span style="display:flex;"><span>natenom.de_categories.list
</span></span><span style="display:flex;"><span>natenom.de_tags.list
</span></span></code></pre></div><p>Ein Auszug aus den Tags:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[…]
</span></span><span style="display:flex;"><span>8:F-Droid
</span></span><span style="display:flex;"><span>1:FLAC
</span></span><span style="display:flex;"><span>4:Facebook
</span></span><span style="display:flex;"><span>1:Fahrbahn
</span></span><span style="display:flex;"><span>556:Fahrrad
</span></span><span style="display:flex;"><span>52:Fahrradanhänger
</span></span><span style="display:flex;"><span>1:Fahrradbubble
</span></span><span style="display:flex;"><span>22:Fahrradcomputer
</span></span><span style="display:flex;"><span>6:Fahrradmordor
</span></span><span style="display:flex;"><span>6:Fahrradparkplätze
</span></span><span style="display:flex;"><span>2:Fahrradstaffel
</span></span><span style="display:flex;"><span>1:Fahrräder
</span></span><span style="display:flex;"><span>10:Falschparker
</span></span><span style="display:flex;"><span>[…]
</span></span></code></pre></div><p>Um nicht manuell in den &ldquo;Datenbanken&rdquo; herumstöbern zu müssen, gibt es <code>--find-tags xyz</code> und <code>--find-categories xyz</code> bzw. die Kurzformen <code>-ft xyz</code> und <code>-fc xyz</code>. Man kann reguläre Ausdrücke verwenden.</p>
<p>Führt man diese aus, wird das Tool <code>fzf</code> (Fuzzy Find) benutzt, um die Liste anzuzeigen und darin suchen zu können:</p>

<figure class="shortcode-video">
    <video preload="metadata" controls>
    <source src="2024-01-06-hugo-searchtag.mp4" type="video/mp4" poster="">
    Your browser does not seem to support video.
    </video>

<figcaption>Mittels fzf kann man in der Liste der Tags suchen. Die Anzahl der Verwendung wird auch angezeigt. (<a href="2024-01-06-hugo-searchtag.mp4">Link zum Video</a>)</figcaption>
</figure>

<div class="shortcode-notice hinweis">
    <div class="shortcode-notice-title hinweis">
        Hinweis</div>
    <div class="notice-content">Ab und zu muss man die Datenbanken neu erstellen lassen, da sonst Tags und Kategorien neuer Blogbeiträge nicht enthalten sind.</div>
</div>


<div class="shortcode-notice hinweis">
    <div class="shortcode-notice-title hinweis">
        Hinweis</div>
    <div class="notice-content">Ich weiß, dass es für VSCode z. B. das Plugin FrontMatter gibt, das genau diese Funktionialität liefert. Ich möchte jedoch kein riesiges Plugin mit tausenden anderen Funktionen nutzen, wenn es auch einfacher geht. Und wer weiß, ob ich in x Zeit immer noch mit VSCode arbeiten werde.</div>
</div>



<h3 id="alles-andere-finden" data-numberify>Alles andere finden<a class="anchor ms-1" href="#alles-andere-finden"></a></h3>
<p>Mittlerweile nutze ich zum Auffinden von Blogbeitragen die Tastenkombination <code>Strg + Shift + f</code> in VSCode. Aber früher brauchte ich dafür etwas Eigenes.</p>
<p>Hierfür gibt es zwei Varianten.</p>

<h4 id="einfache-variante" data-numberify>Einfache Variante<a class="anchor ms-1" href="#einfache-variante"></a></h4>
<p>Mittels <code>--find xyz</code> bzw. der Kurzform <code>-f xyz</code> wird einfach nur rekursiv nach xyz im Content-Verzeichnis der angegebenen Website gegrept und es gibt eine farbige Ausgabe mit Dateinamen und der zum Suchbegriff passenden Zeile. Groß- und Kleinschreibung werden dabei nicht ignoriert.</p>
<p>Hier z. B. das Ergebnis für die Suche nach <code>^hugo</code>. Das ist ein Regulärer Ausdruck, der nur auf Zeilen passt, in denen <code>hugo</code> am Anfang der Zeile steht:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>posts/2022/2022-02-18-mein-workflow-mit-hugo/index.md:130:1:hugo server -E -D -F -v -c /home/hugo-light/content/
</span></span><span style="display:flex;"><span>posts/2022/2022-02-27-hugo-theme-optimiert-zeit-zum-rendern-massiv-verringert.md:24:1:hugo --templateMetrics --templateMetricsHints --gc --minify &gt; hugo-metric_0.txt
</span></span><span style="display:flex;"><span>posts/2022/2022-02-06-ich-mache-wieder-einen-linkdump-woechentlich/index.md:64:1:hugo new -k linkdump posts/2022-02-linkdump-kw-6-2022
</span></span><span style="display:flex;"><span>posts/2022/2022-03-19-umzug-dokuwiki-hugo-3-einrichtung/index.md:29:1:hugo new site wiki.natenom.com
</span></span><span style="display:flex;"><span>posts/2022/2022-02-03-umzug-von-wordpress-zu-hugo-1/index.md:310:1:hugo server --renderToDisk -D -E -F -v
</span></span><span style="display:flex;"><span>posts/2022/2022-02-13-weiterleitungen-auf-umlaut-urls/index.md:55:1:hugo-search-tags -E &#34;(ä|ö|ü|ß)&#34; | cut -d&#39;:&#39; -f2 &gt; /tmp/umlaut-urls-hugo.txt
</span></span></code></pre></div><p>So kann ich z. B. sehr einfach alle Blogbeiträge anzeigen lassen, die ein bestimmtes Tag oder eine Kategorie verwenden, hier z. B. &ldquo;Linux&rdquo;, in dem ich den Regulären Ausdruck <code>hgb -f &quot;^\W+- Linux&quot;</code> nutze, der auf Zeilen passt, die am Zeilenanfang beliebig viele Leerzeichen enthalten, gefolgt von <code>- Linux</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[…]
</span></span><span style="display:flex;"><span>posts/2013/2013-06-27-alle-videos-eines-youtube-kanals-auf-einmal-herunterladen-mit-youtube-dl.md:7:1:  - Linux
</span></span><span style="display:flex;"><span>posts/2018/2018-11-12-mit-fensterregeln-in-plasma5-kde-bestimmte-fenster-beim-task-switcher-und-anderen-effekten-ignorieren.md:13:1:  - Linux
</span></span><span style="display:flex;"><span>posts/2013/2013-08-15-neuer-versuch-mit-kde-sc.md:11:1:  - Linux
</span></span><span style="display:flex;"><span>[…]
</span></span></code></pre></div>
<h4 id="erweiterte-variante" data-numberify>Erweiterte Variante<a class="anchor ms-1" href="#erweiterte-variante"></a></h4>
<p>Mittels <code>--find-fuzzy xyz</code> bzw. der Kurzform <code>-ff xyz</code> wird die Ausgabe der oben gezeigten einfachen Variante zusätzlich an <code>fzf</code> übergeben, sodass man darin suchen kann, eine Vorschau der Datei angezeigt bekommt und durch Drücken von <code>F4</code> die Datei direkt im Editor öffnen kann, den man in der Konfiguration in <code>bin_editor</code> eingestellt hat.</p>
<p>Auch hier kann man reguläre Ausdürcke verwenden, z. B. <code>-ff &quot;Markdown.*kate&quot;</code></p>
 <figure class="image-caption"><a href="2024-01-09-beispiel-hgh-ff-cover.webp"><picture>
                <source type="image/webp" srcset="/2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/2024-01-09-beispiel-hgh-ff-cover_hub930d5896ab04f44420e5ef9ccf62eb9_74206_360x0_resize_q95_h2_catmullrom_2.webp 360w,/2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/2024-01-09-beispiel-hgh-ff-cover_hub930d5896ab04f44420e5ef9ccf62eb9_74206_500x0_resize_q95_h2_catmullrom_2.webp 500w,/2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/2024-01-09-beispiel-hgh-ff-cover_hub930d5896ab04f44420e5ef9ccf62eb9_74206_816x0_resize_q95_h2_catmullrom_2.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/2024-01-09-beispiel-hgh-ff-cover_hub930d5896ab04f44420e5ef9ccf62eb9_74206_360x0_resize_q95_h2_catmullrom_2.webp 360w, /2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/2024-01-09-beispiel-hgh-ff-cover_hub930d5896ab04f44420e5ef9ccf62eb9_74206_500x0_resize_q95_h2_catmullrom_2.webp 500w, /2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/2024-01-09-beispiel-hgh-ff-cover_hub930d5896ab04f44420e5ef9ccf62eb9_74206_816x0_resize_q95_h2_catmullrom_2.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/2024-01-09-beispiel-hgh-ff-cover_hub930d5896ab04f44420e5ef9ccf62eb9_74206_816x0_resize_q95_h2_catmullrom_2.webp" title="" loading="lazy" width="816" height="623" /></picture></a></figure>

<h3 id="website-bauen-und-hochladen" data-numberify>Website bauen und hochladen<a class="anchor ms-1" href="#website-bauen-und-hochladen"></a></h3>
<p>Mit <code>hgh.py --site blog --build</code> wird mein Blog lokal gebaut, sodass ich ihn nach einer kurzen Prüfung mit <code>hgh.py --site blog --upload</code> hochladen kann.</p>
<p>Wenn ich mir sicher bin, kann ich auch beide Schritte vereinen mit <code>hgh.py --site blog --deploy</code>.</p>

<h2 id="hugo-helper-herunterladen" data-numberify>Hugo Helper herunterladen<a class="anchor ms-1" href="#hugo-helper-herunterladen"></a></h2>
<p>Das Hugo Helper Script gibt es <a  class='urlextern'  href="https://code.cozy.town/natenom/hgh">hier</a>.</p>
<p>Viel Spaß damit. Oder eben nicht. ☺️</p>]]></content:encoded><enclosure url="https://natenom.de/2024/01/mein-hugo-helper-python-script-und-was-es-tun-kann/2024-01-09-beispiel-hgh-ff-cover.webp" length="74206" type="image/webp"/></item><item><title>Datei in VSCode im Kontext eines bestimmten Workspace öffnen</title><link>https://natenom.de/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/</link><pubDate>Mon, 08 Jan 2024 03:04:53 +0100</pubDate><guid>https://natenom.de/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/</guid><description>&lt;p>Ich konnte heute mein &lt;a href="/2024/01/neues-helferlein-fuer-hugo-erleichtert-das-bloggen/">Helferscript für das Schreiben von Blogbeiträgen&lt;/a> nochmals verbessern.&lt;/p></description><content:encoded><![CDATA[<p>Ich konnte heute mein <a  href="/2024/01/neues-helferlein-fuer-hugo-erleichtert-das-bloggen/">Helferscript für das Schreiben von Blogbeiträgen</a> nochmals verbessern.</p>
<p>Jetzt ist es auch möglich, direkt im Anschluss den neuen Blogbeitrag (als index.md) innerhalb eines bestimmten Workspace in VSCode zu öffnen.</p>
<p>Wie das geht, ist aber meiner Ansicht nach nicht wirklich intuitiv und deshalb lege ich es hier ab, damit es gefunden werden kann.</p>
<p>So reicht es nicht aus, einfach VSCode beim Start den Dateinamen in der Shell anzugeben. Dann wird nur die Datei geöffnet aber ohne einen Bezug zum Workspace herzustellen und der &ldquo;Explorer&rdquo; ist auch nicht verfügbar:</p>
 <figure class="image-caption"><a href="2024-01-08-datei-mit-vscode-oeffnen-ohne-workspace-cover.webp"><picture>
                <source type="image/webp" srcset="/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/_hu3d5b5105e3c96be5ad718d8d09033028_133584_239ab88eb05d01f2aae0c979ce313213.webp 360w,/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/_hu3d5b5105e3c96be5ad718d8d09033028_133584_778a240049aa15013c1d7d604cef1cd9.webp 500w,/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/_hu3d5b5105e3c96be5ad718d8d09033028_133584_de97a77783a1a8aa60d7ae42e8e1aded.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/_hu3d5b5105e3c96be5ad718d8d09033028_133584_239ab88eb05d01f2aae0c979ce313213.webp 360w, /2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/_hu3d5b5105e3c96be5ad718d8d09033028_133584_778a240049aa15013c1d7d604cef1cd9.webp 500w, /2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/_hu3d5b5105e3c96be5ad718d8d09033028_133584_de97a77783a1a8aa60d7ae42e8e1aded.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/_hu3d5b5105e3c96be5ad718d8d09033028_133584_de97a77783a1a8aa60d7ae42e8e1aded.webp" title="" loading="lazy" width="816" height="496" /></picture></a></figure>
<p>Stattdessen muss man zusätzlich zum Pfad der Datei noch den Pfad zum Verzeichnis des Workspace in der Kommandozeile angeben:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>vscode /pfad/blogworkspace/blogpost1/index.md /pfad/blogworkspace
</span></span></code></pre></div><p>Erst dann ist links der Explorer mit all den zugehörigen Dateien des Workspace sichtbar:</p>
 <figure class="image-caption"><a href="2024-01-08-datei-mit-vscode-oeffnen-mit-workspace.webp"><picture>
                <source type="image/webp" srcset="/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/2024-01-08-datei-mit-vscode-oeffnen-mit-workspace_hu15aaaeed840da94f2d54fb0ffbd019ce_71442_360x0_resize_q95_h2_catmullrom_2.webp 360w,/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/2024-01-08-datei-mit-vscode-oeffnen-mit-workspace_hu15aaaeed840da94f2d54fb0ffbd019ce_71442_500x0_resize_q95_h2_catmullrom_2.webp 500w,/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/2024-01-08-datei-mit-vscode-oeffnen-mit-workspace_hu15aaaeed840da94f2d54fb0ffbd019ce_71442_816x0_resize_q95_h2_catmullrom_2.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/2024-01-08-datei-mit-vscode-oeffnen-mit-workspace_hu15aaaeed840da94f2d54fb0ffbd019ce_71442_360x0_resize_q95_h2_catmullrom_2.webp 360w, /2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/2024-01-08-datei-mit-vscode-oeffnen-mit-workspace_hu15aaaeed840da94f2d54fb0ffbd019ce_71442_500x0_resize_q95_h2_catmullrom_2.webp 500w, /2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/2024-01-08-datei-mit-vscode-oeffnen-mit-workspace_hu15aaaeed840da94f2d54fb0ffbd019ce_71442_816x0_resize_q95_h2_catmullrom_2.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/2024-01-08-datei-mit-vscode-oeffnen-mit-workspace_hu15aaaeed840da94f2d54fb0ffbd019ce_71442_816x0_resize_q95_h2_catmullrom_2.webp" title="" loading="lazy" width="816" height="496" /></picture></a></figure>]]></content:encoded><enclosure url="https://natenom.de/2024/01/datei-in-vscode-im-kontext-eines-bestimmten-workspace-oeffnen/2024-01-08-datei-mit-vscode-oeffnen-ohne-workspace-cover.webp" length="133584" type="image/webp"/></item><item><title>Neues Helferlein für Hugo erleichtert das Bloggen</title><link>https://natenom.de/2024/01/neues-helferlein-fuer-hugo-erleichtert-das-bloggen/</link><pubDate>Fri, 05 Jan 2024 20:36:47 +0100</pubDate><guid>https://natenom.de/2024/01/neues-helferlein-fuer-hugo-erleichtert-das-bloggen/</guid><description>&lt;p>Ich habe hier seit Anfang Dezember nichts mehr im Blog geschrieben und das liegt unter anderem daran, dass der Start eines Blogbeitrags immer etwas umständlich war.&lt;/p>
&lt;p>Das habe ich jetzt mit einem Script automatisiert und kann direkt mit dem Schreiben beginnen, statt die verschiedenen Dinge im Voraus manuell machen zu müssen.&lt;/p></description><content:encoded><![CDATA[<p>Ich habe hier seit Anfang Dezember nichts mehr im Blog geschrieben und das liegt unter anderem daran, dass der Start eines Blogbeitrags immer etwas umständlich war.</p>
<p>Das habe ich jetzt mit einem Script automatisiert und kann direkt mit dem Schreiben beginnen, statt die verschiedenen Dinge im Voraus manuell machen zu müssen.</p>
<p>Das Script rufe ich z. B. so auf:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hgb --create <span style="color:#e6db74">&#34;Neues Helferlein für Hugo erleichtert das Bloggen&#34;</span>
</span></span></code></pre></div>
<h2 id="das-script" data-numberify>Das Script<a class="anchor ms-1" href="#das-script"></a></h2>
<p>Das Script macht folgende Arbeiten für mich:</p>

<h3 id="verzeichnisse-erstellen" data-numberify>Verzeichnisse erstellen<a class="anchor ms-1" href="#verzeichnisse-erstellen"></a></h3>
<p>Innerhalb des <code>content</code> Verzeichnisses von Hugo legt es, wenn noch nicht vorhanden, alle Überverzeichnisse für Jahr und Monat an.</p>
<p>Da dies der erste Beitrag in diesem Jahr ist, hat das Script die Verzeichnisstruktur in <code>…/content/posts/</code> erstellt:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>2024/
</span></span><span style="display:flex;"><span>    01/
</span></span></code></pre></div>
<h3 id="slug-erzeugen" data-numberify>Slug erzeugen<a class="anchor ms-1" href="#slug-erzeugen"></a></h3>
<p>Der Slug ist ein Teil der späteren URL. Bei mir im Blog besteht die endgültige URL eines Blogbeitrags z. B. aus <code>https://natenom.de/JAHR/MONAT/SLUG/</code>.</p>
<p>Das Script erzeugt den Slug automatisch aus dem angegebenen Titel für den neuen Blogbeitrag. Dabei werden folgende Aufgaben erledigt:</p>
<ul>
<li>Der Slug wird auf xx Zeichen verkürzt.</li>
<li>Großschreibung wird in Kleinschreibung umgewandelt.</li>
<li>Leerzeichen werden durch Bindestriche ersetzt.</li>
<li>Umlaute werden durch Entsprechungen wie z. B. <code>ae</code> oder <code>ss</code> ersetzt.</li>
<li>Alle verbleibenden Zeichen, die nicht alphanumerisch und keine Bindestriche sind, werden entfernt.</li>
</ul>

<h3 id="page-bundle" data-numberify>Page Bundle<a class="anchor ms-1" href="#page-bundle"></a></h3>
<p>Innerhalb der bereits erstellten Verzeichnisstruktur für Jahr und Monat (siehe oben) wird nun ein Page Bundle erstellt. Der Verzeichnisname besteht aus dem aktuellen Datum und dem Slug. Hier z. B.:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>2024-01-05-neues-helferlein-fuer-hugo-erleichtert-das-bloggen/
</span></span></code></pre></div>
<h3 id="datei-indexmd" data-numberify>Datei index.md<a class="anchor ms-1" href="#datei-indexmd"></a></h3>
<p>In dem erstellten Page Bundle wird nun die Datei <code>index.md</code> aus einem eigenen Template generiert, in welchem die Metadaten <code>title</code>, <code>slug</code> und <code>date</code> im Front Matter eingefügt werden. Die anderen Metadaten wie Kategorien und Tags fülle ich manuell aus.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span><span style="color:#f92672">title</span>: <span style="color:#e6db74">&#34;Neues Helferlein für Hugo erleichtert das Bloggen&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">slug</span>: <span style="color:#ae81ff">neues-helferlein-fuer-hugo-erleichtert-das-bloggen</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">author</span>: <span style="color:#ae81ff">Natenom</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">date</span>: <span style="color:#e6db74">2024-01-05T20:25:55</span><span style="color:#ae81ff">+01</span>:<span style="color:#ae81ff">00</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">categories</span>:
</span></span><span style="display:flex;"><span>  -
</span></span><span style="display:flex;"><span><span style="color:#f92672">tags</span>:
</span></span><span style="display:flex;"><span>  -
</span></span><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">&lt;!--more--&gt;</span>
</span></span></code></pre></div>
<h2 id="nächster-schritt" data-numberify>Nächster Schritt<a class="anchor ms-1" href="#nächster-schritt"></a></h2>
<p>Das Script zeigt nun ein paar Infos an und auch, wie ich die Datei direkt in VSCode öffnen kann, weil ich das fürs Schreiben in Markdown verwende:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Page Bundle erfolgreich erstellt:
</span></span><span style="display:flex;"><span>        Template: default
</span></span><span style="display:flex;"><span>        Slug: neues-helferlein-fuer-hugo-erleichtert-das-bloggen
</span></span><span style="display:flex;"><span>        Verzeichnis: /…/content/posts/2024/01/2024-01-05-neues-helferlein-fuer-hugo-erleichtert-das-bloggen
</span></span><span style="display:flex;"><span>Hinweise:
</span></span><span style="display:flex;"><span>        Pfad zur Datei in Zwischenablage eingefügt. In VSCodium öffnen mit &#39;Strg + o&#39; und einfügen, Leerzeichen am Ende entfernen. (Das Leerzeichen am Ende kommt von VSCode.)
</span></span></code></pre></div>
<h2 id="blogbeitrag-schreiben" data-numberify>Blogbeitrag schreiben<a class="anchor ms-1" href="#blogbeitrag-schreiben"></a></h2>
<p>Nun kann ich im bereits geöffneten VSCode die Tastenkombinatin <code>Strg + o</code> drücken, gefolgt von <code>Strg + v</code>, muss noch das Leerzeichen entfernen, das VSCode ans Ende angefügt hat, drücke Enter und kann anfangen, den Blogbeitrag zu schreiben.</p>

<h2 id="passt" data-numberify>Passt<a class="anchor ms-1" href="#passt"></a></h2>
<p>So soll das sein. Wenn ich in Zukunft eine Idee habe, kann ich sofort anfangen, zu schreiben und bin nicht erst noch abgelenkt von den vielen verschiedenen Aufgaben, um die Datei für den Blogbeitrag erst noch erstellen zu müssen.</p>
<p>Das hat jetzt auch sehr gut funktioniert.</p>]]></content:encoded></item><item><title>In VSCode flackert der Front Matter Bereich bei Eingaben</title><link>https://natenom.de/2023/05/vscode-front-matter-flackert-bei-eingaben/</link><pubDate>Sun, 21 May 2023 10:51:49 +0200</pubDate><guid>https://natenom.de/2023/05/vscode-front-matter-flackert-bei-eingaben/</guid><description>&lt;p>Seit dem letzten Release flackert der Front Matter Bereich bei fast jedem eingegebenen Zeichen. Das nervt gewaltig.&lt;/p></description><content:encoded><![CDATA[<p>Seit dem letzten Release flackert der Front Matter Bereich bei fast jedem eingegebenen Zeichen. Das nervt gewaltig.</p>
<figure class="shortcode-video">
    <video preload="metadata" controls>
    <source src="2023-05-21-front-matter-vscode-flackert.mp4" type="video/mp4" poster="">
    Your browser does not seem to support video.
    </video>

<figcaption>Flackern bei Eingaben. (<a href="2023-05-21-front-matter-vscode-flackert.mp4">Link zum Video</a>)</figcaption>
</figure>

<p>Ich habe noch keine Lösung dafür gefunden, sodass es nur hilft, die Hervorhebung des Bereichs auszuschalten. Dies findet man in den Einstellungen des Plugins &ldquo;Front Matter&rdquo;:</p>
 <figure class="image-caption"><a href="2023-05-21-front-matter-plugin-highlight-aus.webp"><picture>
                <source type="image/webp" srcset="/2023/05/vscode-front-matter-flackert-bei-eingaben/2023-05-21-front-matter-plugin-highlight-aus_hu0e88d97bdd1fb20cbd6c3987dad30e91_12448_360x0_resize_q95_h2_catmullrom_2.webp 360w,/2023/05/vscode-front-matter-flackert-bei-eingaben/2023-05-21-front-matter-plugin-highlight-aus_hu0e88d97bdd1fb20cbd6c3987dad30e91_12448_500x0_resize_q95_h2_catmullrom_2.webp 500w,/2023/05/vscode-front-matter-flackert-bei-eingaben/2023-05-21-front-matter-plugin-highlight-aus_hu0e88d97bdd1fb20cbd6c3987dad30e91_12448_816x0_resize_q95_h2_catmullrom_2.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2023/05/vscode-front-matter-flackert-bei-eingaben/2023-05-21-front-matter-plugin-highlight-aus_hu0e88d97bdd1fb20cbd6c3987dad30e91_12448_360x0_resize_q95_h2_catmullrom_2.webp 360w, /2023/05/vscode-front-matter-flackert-bei-eingaben/2023-05-21-front-matter-plugin-highlight-aus_hu0e88d97bdd1fb20cbd6c3987dad30e91_12448_500x0_resize_q95_h2_catmullrom_2.webp 500w, /2023/05/vscode-front-matter-flackert-bei-eingaben/2023-05-21-front-matter-plugin-highlight-aus_hu0e88d97bdd1fb20cbd6c3987dad30e91_12448_816x0_resize_q95_h2_catmullrom_2.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2023/05/vscode-front-matter-flackert-bei-eingaben/2023-05-21-front-matter-plugin-highlight-aus_hu0e88d97bdd1fb20cbd6c3987dad30e91_12448_816x0_resize_q95_h2_catmullrom_2.webp" title="" loading="lazy" width="816" height="238" /></picture></a></figure>]]></content:encoded></item><item><title>Update für VSCode bringt neue Variable für Zeitzonenoffset</title><link>https://natenom.de/2023/05/update-fuer-vscode-bringt-neue-variable-fuer-zeitzonenoffeset/</link><pubDate>Wed, 17 May 2023 22:57:55 +0200</pubDate><guid>https://natenom.de/2023/05/update-fuer-vscode-bringt-neue-variable-fuer-zeitzonenoffeset/</guid><description>&lt;p>Heute mal die &lt;a class='urlextern' href="https://code.visualstudio.com/updates/v1_78">Release-Notes von VSCode&lt;/a> gelesen und festgestellt, dass ich jetzt nicht mehr daran denken muss, bei Sommerzeit-Winterzeit-Umstellung meine Snippets zu bearbeiten.&lt;/p></description><content:encoded><![CDATA[<p>Heute mal die <a  class='urlextern'  href="https://code.visualstudio.com/updates/v1_78">Release-Notes von VSCode</a> gelesen und festgestellt, dass ich jetzt nicht mehr daran denken muss, bei Sommerzeit-Winterzeit-Umstellung meine Snippets zu bearbeiten.</p>
<p>Denn als ich damals meine <a  href="/2023/04/meine-snippets-in-vscode-fuer-markdown-mit-hugo/">Snippets für Hugo in VSCode</a> erstellt hatte, gab es noch keine Variable, die den Offset der aktuellen Zeitzone enthielt.</p>
<p>Das hat man in diesem Release nachgeholt, die Variable heißt <code>$CURRENT_TIMEZONE_OFFSET</code> und enthält bei mir den String <code>+02:00</code>.</p>]]></content:encoded></item><item><title>markdownlint für VSCode zeigt Fehler in der Formatierung von Markdown an</title><link>https://natenom.de/2023/04/markdownlint-fuer-vscode-zeigt-fehler-in-der-formatierung-von-markdown-an/</link><pubDate>Sun, 16 Apr 2023 13:12:51 +0200</pubDate><guid>https://natenom.de/2023/04/markdownlint-fuer-vscode-zeigt-fehler-in-der-formatierung-von-markdown-an/</guid><description>&lt;p>Ich benutze VSCode zum Schreiben von Beiträgen in Markdown für meinen Blog und für mein Wiki. Seit ein paar Tagen läuft in VSCode auch das Plugin &lt;code>markdownlint&lt;/code>. Dieses zeigt mir Fehler in der Formatierung oder der Struktur meiner Beiträge an, schlägt aber auch gleich Lösungen vor.&lt;/p></description><content:encoded><![CDATA[<p>Ich benutze VSCode zum Schreiben von Beiträgen in Markdown für meinen Blog und für mein Wiki. Seit ein paar Tagen läuft in VSCode auch das Plugin <code>markdownlint</code>. Dieses zeigt mir Fehler in der Formatierung oder der Struktur meiner Beiträge an, schlägt aber auch gleich Lösungen vor.</p>
<p>Ich nutze Markdown schon eine ganze Weile und es gab nie Fehler beim Rendern von Websites. Aber es ist natürlich schöner, wenn man Markdown so schreibt, wie es vorgegeben ist und so hoffentlich Probleme mit anderen Programmen vermeiden kann.</p>

<h2 id="beispiele" data-numberify>Beispiele<a class="anchor ms-1" href="#beispiele"></a></h2>
<p>Ein paar Beispiele für Fehler, die ich bisher falsch auch in älteren Beiträgen hatte und die durch das Plugin mit einer gelben Wellenlinie markiert werden:</p>
<ul>
<li>Keine Leerzeile zwischen Überschrift und nächstem Absatz.</li>
<li>Unformatierte inline URLs ohne <code>&lt; … &gt;</code> an Anfang und Ende.</li>
<li>Unnötige Leerzeilen.</li>
<li>Anzahl Leerzeichen für Einrückungen.</li>
<li>Fehlende Bildbeschreibung für eingebettete Bilder. Natürlich geht das nur, wenn man die Markdown-Syntax dafür nutzt, für Shortcodes von Hugo funktioniert das nicht.</li>
<li>Fußnote am Ende des Dokuments hat keine Entsprechung im Fließtext.</li>
</ul>

<h2 id="infos-und-projektseite" data-numberify>Infos und Projektseite<a class="anchor ms-1" href="#infos-und-projektseite"></a></h2>
<p>Eine Liste der Regeln, die markdownlint kennt, gibt es <a  class='urlextern'  href="https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md">hier</a>.</p>
<p>Und hier die <a  class='urlextern'  href="https://github.com/DavidAnson/vscode-markdownlint">Projektseite</a>.</p>]]></content:encoded><enclosure url="https://natenom.de/2023/04/markdownlint-fuer-vscode-zeigt-fehler-in-der-formatierung-von-markdown-an/2023-04-16-screenshot-vscode-mit-fehlern-cover-featured.webp" length="52550" type="image/webp"/></item><item><title>Meine Snippets in VSCode für Markdown mit Hugo</title><link>https://natenom.de/2023/04/meine-snippets-in-vscode-fuer-markdown-mit-hugo/</link><pubDate>Fri, 14 Apr 2023 02:43:36 +0200</pubDate><guid>https://natenom.de/2023/04/meine-snippets-in-vscode-fuer-markdown-mit-hugo/</guid><description><![CDATA[<p>Hier, wie versprochen, meine aktuellen Snippets, die ich in VSCode verwende, wenn ich Beiträge für meinen Blog oder das <a  href="https://wiki.natenom.de/">Wiki</a> in Markdown schreibe, das dann von Hugo gerendert wird.</p>
<p>Vielleicht ist für jemanden etwas Nützliches dabei.</p>]]></description><content:encoded><![CDATA[<p>Hier, wie versprochen, meine aktuellen Snippets, die ich in VSCode verwende, wenn ich Beiträge für meinen Blog oder das <a  href="https://wiki.natenom.de/">Wiki</a> in Markdown schreibe, das dann von Hugo gerendert wird.</p>
<p>Vielleicht ist für jemanden etwas Nützliches dabei.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#e6db74">&#34;nat_sphere&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-nat-sphere&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; sphere src=\&#34;$1\&#34; caption=\&#34;$2\&#34; osmurl=\&#34;$3\&#34; osmembedurl=\&#34;$4\&#34; imgsize=\&#34;$5\&#34; &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;360° Photosphere&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;nat_gallery&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-nat_gallery&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; nat_gallery match=\&#34;images/*\&#34; &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Natenoms own gallery&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;notice&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-notice&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;{{&lt; notice ${1|hinweis,tipp,info,warnung,update|} &gt;}}&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;${TM_SELECTED_TEXT}$0&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;{{&lt; /notice &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Notice, tip, info, …&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;codewarning&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-codewarning&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;{{&lt; codewarning &gt;}}&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Codewarning wegen Copy &amp; Paste in die Shell hinein.&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;video&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-video&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; video src=\&#34;$1\&#34; caption=\&#34;$2\&#34; type=\&#34;video/mp4\&#34; linktext=\&#34;\&#34; &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Video&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;figure&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-figure&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; figure src=\&#34;$1\&#34; link=\&#34;$2\&#34; alt=\&#34;$3\&#34; title=\&#34;$4\&#34; caption=\&#34;$5\&#34; width=\&#34;\&#34; float=\&#34;\&#34; &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Bilder einfügen&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;disclaimer&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-disclaimer&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; disclaimer &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Disclaimer für Beiträge über Produkte&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;details&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-details&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; details title=\&#34;$1\&#34; &gt;}}&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;${TM_SELECTED_TEXT}$0&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; /details &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Ausklappbarer Details&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;clear&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-clear&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; clear &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Float clear&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;datetime&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-datetime&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;$CURRENT_YEAR-$CURRENT_MONTH-${CURRENT_DATE}T${CURRENT_HOUR}:$CURRENT_MINUTE:$CURRENT_SECOND+02:00&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Date/Time for blog post.&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;blockquote&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-blockquote&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; blockquote cite=\&#34;$1\&#34; link=\&#34;$2\&#34; linktext=\&#34;\&#34; &gt;}}&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;${TM_SELECTED_TEXT}$0&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;{{&lt; /blockquote &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Zitat&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;frontmatter-blog&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-frontmatter-blog&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;---&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;title: \&#34;$1\&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;# linkTitle: &#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;slug: ${2/[\\ ]/-/g}&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;date: $CURRENT_YEAR-$CURRENT_MONTH-${CURRENT_DATE}T${CURRENT_HOUR}:$CURRENT_MINUTE:$CURRENT_SECOND+02:00&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;# featured: false&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;draft: false&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;# comment: true&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;# toc: true&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;# reward: false&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;# pinned: false&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;# carousel: false&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;# reward: false&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;author: Natenom&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;#description: &#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;categories:&#34;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;  - $3&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;tags:&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;  - $4&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;# series: &#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;#comments:&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;#  host: social.anoxinon.de&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;#  username: natenom&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;#  id: &#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;---&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Front Matter Blog&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;blog-template-fahrradstatistik&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-blog-template-fahrradstatistik&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;---&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;title: \&#34;Meine Fahrradstatistik für ${1:monat} ${CURRENT_YEAR}\&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;slug: fahrradstatistik-${1/(.*)/${1:/downcase}/}-${CURRENT_YEAR}&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;author: Natenom&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;date: $CURRENT_YEAR-$CURRENT_MONTH-${CURRENT_DATE}T${CURRENT_HOUR}:$CURRENT_MINUTE:$CURRENT_SECOND+02:00&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;categories:&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Mobilität&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;tags:&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- ${1}&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Fahrrad&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Mobilität&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Statistiken&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Strecke&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;---&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;&lt;!--more--&gt;&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Gefahrene Kilometer: ${0} km ([${1}]() 2022:  km)&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Reine Fahrzeit: h (${1} 2022:  h  min)&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Höhenmeter (nur hoch):  hm (${1} 2022:  hm)&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Gesamtkilometer 2023:  km (gleicher Zeitraum 2022:  km)&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Regentage: &#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Schneetage: &#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Kalorienverbrauch:  kcal&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Durchschnittliche Geschwindigkeit:  km/h&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Durchschnittlicher Puls: &#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Höchster Puls: &#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Aktuelles Gewicht:  kg&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Blog Template Fahrradkilometer&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;blog-template-microblog&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-blog-template-microblog&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;---&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;title: \&#34;Microblog: ${1:Titel}\&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;slug: ${2/[\\ ]/-/g}&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;author: Natenom&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;date: $CURRENT_YEAR-$CURRENT_MONTH-${CURRENT_DATE}T${CURRENT_HOUR}:$CURRENT_MINUTE:$CURRENT_SECOND+02:00&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;categories:&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- ${3:Allgemein}&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;tags:&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;- Microblog&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;---&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;$0&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Blog Template Microblog&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;more&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-more&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;&lt;!--more--&gt;&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;$0&#34;</span>
</span></span><span style="display:flex;"><span>        ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;More anchor&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;codefence&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-codefence&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;```${1|apacheconf,awk,bash,c,c#,coffeescript,css,diff,go,html,ini,json,julia,markdown,plaintext,python,ruby,toml,xml,javascript|}&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;${TM_SELECTED_TEXT}$0&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;```&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;More anchor&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;table&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;scope&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-table&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;| ${1} | ${2} |&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;| ------|------ |&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;| ${3} | ${4} |&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;|  |  |&#34;</span>,
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Table&#34;</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div>]]></content:encoded></item><item><title>Snippet für Front Matter in VSCode</title><link>https://natenom.de/2023/04/snippet-fuer-front-matter-in-vscode/</link><pubDate>Fri, 14 Apr 2023 01:12:56 +0200</pubDate><guid>https://natenom.de/2023/04/snippet-fuer-front-matter-in-vscode/</guid><description>&lt;p>Habe für das aktuelle Datum eines Blogbeitrags ein Snippet erstellt und mich gefragt, weshalb dieses nicht über die Autovervollständigung verfügbar war.&lt;/p></description><content:encoded><![CDATA[<p>Habe für das aktuelle Datum eines Blogbeitrags ein Snippet erstellt und mich gefragt, weshalb dieses nicht über die Autovervollständigung verfügbar war.</p>
<p>Lag wohl am &ldquo;Scope&rdquo;, der auf &ldquo;Markdown&rdquo; eingestellt war und der Markdown-Bereich in einem Blogbeitrag für Hugo erst nach den drei <code>---</code> anfängt. Habe das auf &ldquo;FrontMatter&rdquo; eingestellt und gehofft, aber das ging auch nicht.</p>
<p>Wenn man die &ldquo;Eigenschaft&rdquo; &ldquo;Scope&rdquo; ganz entfernt, geht es.</p>
<p>Hier das Snippet:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#e6db74">&#34;datetime&#34;</span><span style="color:#f92672">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;md-datetime&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;$CURRENT_YEAR-$CURRENT_MONTH-${CURRENT_DATE}T${CURRENT_HOUR}:$CURRENT_MINUTE:$CURRENT_SECOND+02:00&#34;</span>
</span></span><span style="display:flex;"><span>    ],
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Date/Time for blog post.&#34;</span>
</span></span><span style="display:flex;"><span>},
</span></span></code></pre></div><p>Hier alle <a  href="/2023/04/meine-snippets-in-vscode-fuer-markdown-mit-hugo/">meine Snippets fürs Schreiben von Blogbeiträgen in Hugo</a>, vielleicht ist ja was Brauchbares für jemanden dabei. 😊</p>]]></content:encoded></item><item><title>Wechsel von Kate zu VSCodium für Markdown</title><link>https://natenom.de/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/</link><pubDate>Sun, 11 Sep 2022 17:01:07 +0200</pubDate><guid>https://natenom.de/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/</guid><description><![CDATA[<p>In dem Zeitraum, als ich meinen Blog und mein Wiki auf Hugo umgestellt hatte, suchte ich lange nach einem guten Editor für Markdown und <a  href="/2022/02/suche-nach-editor-fuers-schreiben-markdown/">probierte viele Editoren aus</a> und bin letztlich beim bis dahin sonst immer verwendeten <a  href="/2022/02/workflow-zum-schreiben-von-blogbeitraegen-hugo/">Editor Kate</a> geblieben. Denn die meisten getesteten Editoren hatten keine Snippets-Funktion und andere Editoren waren mir zu überladen (z. B. solche, die auf <a  class='urlextern'  href="https://www.electronjs.org/">Electron</a> basieren).</p>
<p>Doch nach mehreren Monaten und vielen geschriebenen Blogbeiträgen fehlen mir ein paar Funktionen in Kate, die Zeit und Nerven fressen oder umständliche &ldquo;Lösungen&rdquo; brauchen.</p>
<p>Was mir in Kate besonders fehlt:</p>
<ul>
<li>Live-Vorschau (wenn auch nicht alle Shortcodes gerendert werden können).</li>
<li>Ordentlich funktionierende Snippets mit Zusatzfunktionen (die in Kate sind nur rudimentär und zudem buggy).</li>
<li>Inhaltsverzeichnis mit der Möglichkeit, zu einem Eintrag zu springen.</li>
<li>Distraction free writing (oder zumindest einigermaßen ordentliche Vorschau). Hierfür habe ich in VSCodium noch keine Lösung gefunden.</li>
</ul>]]></description><content:encoded><![CDATA[<p>In dem Zeitraum, als ich meinen Blog und mein Wiki auf Hugo umgestellt hatte, suchte ich lange nach einem guten Editor für Markdown und <a  href="/2022/02/suche-nach-editor-fuers-schreiben-markdown/">probierte viele Editoren aus</a> und bin letztlich beim bis dahin sonst immer verwendeten <a  href="/2022/02/workflow-zum-schreiben-von-blogbeitraegen-hugo/">Editor Kate</a> geblieben. Denn die meisten getesteten Editoren hatten keine Snippets-Funktion und andere Editoren waren mir zu überladen (z. B. solche, die auf <a  class='urlextern'  href="https://www.electronjs.org/">Electron</a> basieren).</p>
<p>Doch nach mehreren Monaten und vielen geschriebenen Blogbeiträgen fehlen mir ein paar Funktionen in Kate, die Zeit und Nerven fressen oder umständliche &ldquo;Lösungen&rdquo; brauchen.</p>
<p>Was mir in Kate besonders fehlt:</p>
<ul>
<li>Live-Vorschau (wenn auch nicht alle Shortcodes gerendert werden können).</li>
<li>Ordentlich funktionierende Snippets mit Zusatzfunktionen (die in Kate sind nur rudimentär und zudem buggy).</li>
<li>Inhaltsverzeichnis mit der Möglichkeit, zu einem Eintrag zu springen.</li>
<li>Distraction free writing (oder zumindest einigermaßen ordentliche Vorschau). Hierfür habe ich in VSCodium noch keine Lösung gefunden.</li>
</ul>
<p>Ich probierte einige der bereits getesteten Editoren noch einmal aus und am besten gefiel mir MarkText, doch das kann leider keine Snippets.</p>
<p>Deshalb habe ich mich für <a  class='urlextern'  href="https://vscodium.com/">VSCodium</a> entschieden, einer etwas freieren Variante von <a  class='urlextern'  href="https://code.visualstudio.com/">Visual Studio Code</a>. Die basiert zwar auf Electron, aber ich jetzt bereit, diesen Kompromiss einzugehen, um dafür viele schöne Funktionen zu bekommen.</p>
<p>In VSCodium gibt es – im Unterschied zu Kate – einige Funktionen, die ich folgend beschreibe.</p>
<div class="shortcode-notice hinweis">
    <div class="shortcode-notice-title hinweis">
        Hinweis</div>
    <div class="notice-content"><p>Eine ältere Liste nützlicher Erweiterungen speziell für Hugo <a  class='urlextern'  href="https://gohugo.io/tools/editors/#visual-studio-code">gibt es auf der Hugo-Projektseite</a>.</p>
<p>Und <a  class='urlextern'  href="https://code.visualstudio.com/docs/languages/markdown">hier</a> ist die Dokumentation für VSCodium für den Umgang mit Markdown.</p>
</div>
</div>



<h2 id="erweiterungen" data-numberify>Erweiterungen<a class="anchor ms-1" href="#erweiterungen"></a></h2>
<p>Für VSCodium gibt es extrem viele Erweiterungen (die ich bisher nicht benötige, aber vielleicht finde ich doch noch hilfreiche Dinge).</p>
<p>Für Kate gibt es Plugins, aber nicht annähernd so viele.</p>

<h2 id="live-vorschau" data-numberify>Live-Vorschau<a class="anchor ms-1" href="#live-vorschau"></a></h2>
<p>An der Live-Vorschau gefällt mir besonders, dass</p>
<ul>
<li>sie automatisch mit scrollt.</li>
<li>es links immer einen Indikator gibt, der anzeige, in welcher Zeile der Cursor gerade ist.</li>
<li>man optional trotzdem unabhängig vom Code in der Vorschau scrollen kann, diese aber wieder synchron läuft, sobald man im Quelltext scrollt.</li>
<li>der Cursor bei einem Doppelklick auf einen Bereich in der Vorschau automatisch auf diese Zeile im Quelltext gesetzt wird.</li>
</ul>
<p>Die Vorschaufunktion gibt zwar nicht genau wieder, wie es später im Blog oder im Wiki aussehen wird, aber es ist ausreichend, sodass ich während des Schreibens den Hugo-Server gar nicht erst anwerfen muss, außer zum Schluss mal wegen Shortcodes, die nicht dargestellt werden, wie <code>figure</code>.</p>
<p>Die Vorschau öffent man mit der Tastenkombination <code>Ctrl + k</code> gefolgt von <code>v</code>.</p>

<h2 id="inhaltsverzeichnis" data-numberify>Inhaltsverzeichnis<a class="anchor ms-1" href="#inhaltsverzeichnis"></a></h2>
<p>Es gibt drei Möglichkeiten, ein Inhaltsverzeichnis des aktuellen Dokuments zu sehen:</p>
<ul>
<li>Mit der Tastenkombination <code>Strg + Shift + o</code> öffnet man das Inhaltsverzeichnis und kann zu einer bestimmten Überschrift springen.</li>
<li>Die aktuelle Überschrift wird auch immer oben in den <code>Breadcrumbs</code> angezeigt. Dort kann man drauf klicken und kann auch wieder zu den Bereichen springen.</li>
<li>In der Leiste links öffnet man den <code>Explorer</code> oder drück die Tastenkombination <code>Ctrl + Shift + e</code> und öffnet unten den Bereich <code>OUTLINE</code>. </p><figure class="image-caption"><picture><source type="webp" srcset="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-strg-shift-o.webp" />
			         <img alt="Screenshot mit dem Inhaltsverzeichnis" src="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-strg-shift-o.webp" title="" width="595" height="236" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</li>
</ul>

<h2 id="snippets" data-numberify>Snippets<a class="anchor ms-1" href="#snippets"></a></h2>
<p>In VSCodium kann man tolle Dinge mit Snippets machen, die ich teilweise auch schon vom Editor <a  class='urlextern'  href="https://micro-editor.github.io/">Micro</a> kenne.</p>
<p>Die Dokumentation für Snippets in VSCodium <a  class='urlextern'  href="https://code.visualstudio.com/docs/editor/userdefinedsnippets">gibt es hier</a>.</p>
<p>Hier einige der Möglichkeiten.</p>
<p>Eigene Snippets trägt man in eine selbst gewählte Datei ein, die man über <code>Ctrl + Shift + p</code> gefolgt von <code>Snippets: Configure User Snippets</code> definieren und öffnen kann.</p>

<h3 id="tabstops" data-numberify>Tabstops<a class="anchor ms-1" href="#tabstops"></a></h3>
<p>In Snippet kann man Positionen definieren, zu denen man nach dem Einfügen mit der <code>Tab</code>-Taste springen kann, sodass man notwendige Eingaben schneller erledigen kann, also mit den Cursor-Tasten zu navigieren. Das nutze ich z. B. in meinem <code>Front Matter</code>-Snippet.</p>

<h3 id="vorauswahl" data-numberify>Vorauswahl<a class="anchor ms-1" href="#vorauswahl"></a></h3>
<p>Hier bekommt man ein kleines Popup-Fenster und kann einen der Einträge auswählen:</p>
<p></p><figure class="image-caption"><picture><source type="webp" srcset="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-snippet-auswahl.webp" />
			         <img alt="Screenshot des Popup-Fensters zur Auswahl der Einträge beim Einfügen eines Snippets." src="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-snippet-auswahl.webp" title="" width="602" height="129" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</p>
<p>Das Snippet dazu sieht so aus:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#e6db74">&#34;notice&#34;</span>: <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>		<span style="color:#e6db74">&#34;scope&#34;</span>: <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>		 <span style="color:#e6db74">&#34;prefix&#34;</span>: <span style="color:#e6db74">&#34;md-notice&#34;</span>,
</span></span><span style="display:flex;"><span>		 <span style="color:#e6db74">&#34;body&#34;</span>: <span style="color:#f92672">[</span>
</span></span><span style="display:flex;"><span>			<span style="color:#e6db74">&#34;{{&lt; notice </span><span style="color:#e6db74">${</span>1|hinweis,tipp,info,warnung,update|<span style="color:#e6db74">}</span><span style="color:#e6db74"> &gt;}}&#34;</span>,
</span></span><span style="display:flex;"><span>			<span style="color:#e6db74">&#34;</span>$0<span style="color:#e6db74">&#34;</span>,
</span></span><span style="display:flex;"><span>			<span style="color:#e6db74">&#34;{{&lt; /notice &gt;}}&#34;</span>
</span></span><span style="display:flex;"><span>		 <span style="color:#f92672">]</span>,
</span></span><span style="display:flex;"><span>		 <span style="color:#e6db74">&#34;description&#34;</span>: <span style="color:#e6db74">&#34;Notice, tip, info, …&#34;</span>
</span></span><span style="display:flex;"><span>	<span style="color:#f92672">}</span>
</span></span></code></pre></div>
<h3 id="snippets-auf-markierte-bereiche-anwenden" data-numberify>Snippets auf markierte Bereiche anwenden<a class="anchor ms-1" href="#snippets-auf-markierte-bereiche-anwenden"></a></h3>
<p>Um einen aktuell im Editor markieren Bereich innerhalb eines Snippets nutzen zu können, gibt es die Variable <code>${TM_SELECTED_TEXT}</code> und weitere (<a  class='urlextern'  href="https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables">siehe hier</a>). Diese Möglichkeit bietet sich an, wenn man z. B. nachträglich einen Bereich als Codeblock oder Zitat formatieren will.</p>
<p>Hat man so ein Snippet geschrieben, markiert man zuerst den benötigen Bereich, drückt <code>Alt + Leertaste</code>, und wählt anschließend das Snippet mit den Cursor-Tasten aus.</p>
<p>Seltsam wird es, wenn man den Eintrag nicht per Cursor-Taste auswählt, sondern, wie sonst auch, den Namen des Snippets tippt. Dann überschreibt man nämlich den markieren Bereich. Doch das macht nichts. Sobald man den passenden Eintrag ausgewählt hat und sofern das Snippet die genannte Variable nutzt, wird beim Bestätigen mit <code>Enter</code> das komplette Snippet inklusive dem überschrieben geglaubten Bereich eingefügt.</p>

<h2 id="datum-fürs-front-matter-direkt-statt-über-shell" data-numberify>Datum fürs Front Matter direkt statt über Shell<a class="anchor ms-1" href="#datum-fürs-front-matter-direkt-statt-über-shell"></a></h2>
<p>Beim Einfügen meines eigenen Snippets <code>frontmatter</code> ist jetzt direkt das aktuelle Datum enthalten. Bisher musste ich das immer erst über ein Shellkommando machen und dann ins <code>Front Matter</code> einfügen. Theoretisch ginge das auch mit Kate und JavaScript, aber das habe ich bisher nicht geschafft.</p>
<p>So sieht dann das <code>Front Matter</code> nach dem Einfügen aus:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span><span style="color:#f92672">title</span>:
</span></span><span style="display:flex;"><span><span style="color:#f92672">slug</span>:
</span></span><span style="display:flex;"><span><span style="color:#f92672">date</span>: <span style="color:#e6db74">2022-09-11T12:40:57</span><span style="color:#ae81ff">+02</span>:<span style="color:#ae81ff">00</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">draft</span>: <span style="color:#66d9ef">false</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">author</span>: <span style="color:#ae81ff">Natenom</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#description:</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">categories</span>:
</span></span><span style="display:flex;"><span>  -
</span></span><span style="display:flex;"><span><span style="color:#f92672">tags</span>:
</span></span><span style="display:flex;"><span>  -
</span></span><span style="display:flex;"><span>---
</span></span></code></pre></div><p>Und das ist das zugehörige Snippet:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#e6db74">&#34;md-frontmatter&#34;</span>: <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;scope&#34;</span>: <span style="color:#e6db74">&#34;markdown&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;prefix&#34;</span>: <span style="color:#e6db74">&#34;md&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;body&#34;</span>: <span style="color:#f92672">[</span>
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;---&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;title: </span>$1<span style="color:#e6db74">&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;slug: </span>$2<span style="color:#e6db74">&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;date: </span>$CURRENT_YEAR<span style="color:#e6db74">-</span>$CURRENT_MONTH<span style="color:#e6db74">-</span><span style="color:#e6db74">${</span>CURRENT_DATE<span style="color:#e6db74">}</span><span style="color:#e6db74">T</span><span style="color:#e6db74">${</span>CURRENT_HOUR<span style="color:#e6db74">}</span><span style="color:#e6db74">:</span>$CURRENT_MINUTE<span style="color:#e6db74">:</span>$CURRENT_SECOND<span style="color:#e6db74">+02:00&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;draft: false&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;author: Natenom&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;#description: &#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;categories:&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;  - </span>$3<span style="color:#e6db74">&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;tags:&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;  - </span>$4<span style="color:#e6db74">&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;---&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">]</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;description&#34;</span>: <span style="color:#e6db74">&#34;Front Matter Blog&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div>
<h2 id="tastenkombinationen" data-numberify>Tastenkombinationen<a class="anchor ms-1" href="#tastenkombinationen"></a></h2>
<p>Eine <a  class='urlextern'  href="https://code.visualstudio.com/docs/getstarted/keybindings#_basic-editing">Liste der Tastenkombinationen</a> für VSCodium.</p>

<h2 id="merk-dir-was" data-numberify>Merk dir was<a class="anchor ms-1" href="#merk-dir-was"></a></h2>
<p>Besonders gut gefällt mir, dass man ein &ldquo;Verzeichnis&rdquo; mit <code>Ctrl + k</code> gefolgt von <code>Ctrl + o</code> öffnen kann und der Editor sich dafür dann die geöffneten Dateien und Ansichten merkt.</p>
<p>So kann ich zwischen Blog und Wiki sehr einfach wechseln und die bearbeiteten Dateien sind weiterhin geföffnet. Das erleichtert die Arbeit.</p>
<p>Alternativ nutzt man die Tastenkombination <code>Ctrl + r</code> und kann dann bisher geöffnete Dateien und oben genannte Verzeichnisse wieder öffnen. Hält man <code>Ctrl</code> dabei gedrückt, werden diese in einem neuen Fenster geöffnet.</p>
<p>Hier z. B. die Ansicht für die Arbeit im Wiki, wo gerade die Selfies vom kleinen Elefanten geöffnet sind:</p>
<p><a  href="2022-09-11-vscodium-mit-meinem-wiki-cover.webp"></p><figure class="image-caption"><picture>
                <source type="image/webp" srcset="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover_hu3887bf5f54664a8d95251105ebf05eb0_205538_360x0_resize_q95_h2_catmullrom_2.webp 360w,/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover_hu3887bf5f54664a8d95251105ebf05eb0_205538_500x0_resize_q95_h2_catmullrom_2.webp 500w,/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover_hu3887bf5f54664a8d95251105ebf05eb0_205538_816x0_resize_q95_h2_catmullrom_2.webp 816w, /2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover_hu3887bf5f54664a8d95251105ebf05eb0_205538_1632x0_resize_q95_h2_catmullrom_2.webp 1632w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px" />
                <img alt="Screenshot von VSCodium mit Navigationsbaum links, dem Quelltext der Selfie-Seite des kleinen Elefanten in der Mitte und der Live-Vorschau rechts." srcset="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover_hu3887bf5f54664a8d95251105ebf05eb0_205538_360x0_resize_q95_h2_catmullrom_2.webp 360w, /2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover_hu3887bf5f54664a8d95251105ebf05eb0_205538_500x0_resize_q95_h2_catmullrom_2.webp 500w, /2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover_hu3887bf5f54664a8d95251105ebf05eb0_205538_816x0_resize_q95_h2_catmullrom_2.webp 816w,/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover_hu3887bf5f54664a8d95251105ebf05eb0_205538_1632x0_resize_q95_h2_catmullrom_2.webp 1632w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px"
                     src="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover_hu3887bf5f54664a8d95251105ebf05eb0_205538_816x0_resize_q95_h2_catmullrom_2.webp" title="" loading="lazy" width="816" height="459" /></picture><figcaption></figcaption></figure><p>
</a></p>

<h2 id="meine-anpassungen-und-installierte-erweiterungen" data-numberify>Meine Anpassungen und installierte Erweiterungen<a class="anchor ms-1" href="#meine-anpassungen-und-installierte-erweiterungen"></a></h2>
<p>Ich habe ein paar kleine Anpassungen für VSCode, die ich hier aufliste, falls ich das irgendwann mal wieder brauche.</p>

<h3 id="weniger-ist-mehr" data-numberify>Weniger ist mehr<a class="anchor ms-1" href="#weniger-ist-mehr"></a></h3>
<p>Ich habe die &ldquo;Status bar&rdquo; (<code>View -&gt; Appearence -&gt; Status bar</code>) unten und die &ldquo;Menu bar&rdquo; (<code>View -&gt; Appearence -&gt; Menu bar</code>) oben ausgeblendet.</p>
<p>Falls man die &ldquo;Status Bar&rdquo; wieder benötigt, kann man sie mit <code>Ctrl + Shift + p</code> und der Eingabe von <code>View: Toggle Status Bar Visibility</code> oder Teilen davon wieder aktivieren.</p>
<p>Für die &ldquo;Menu bar&rdquo; gibt man <code>View: Toggle Menu bar</code> ein. Oder man drückt die <code>Alt</code>-Taste, dann erscheint die Menübar, wird direkt fokusiert, und verschwindet dann wieder, sobald man einen Eintrag gewählt hat oder erneut die <code>Alt</code>-Taste drückt.</p>

<h3 id="hervorhebung-der-aktuellen-zeile" data-numberify>Hervorhebung der aktuellen Zeile<a class="anchor ms-1" href="#hervorhebung-der-aktuellen-zeile"></a></h3>
<p>Die Hervorhebung der aktuellen Zeile gefällt mir bei VSCodium gar nicht, deshalb habe ich das so angepasst, wie ich es von Kate gewohnt bin.</p>
<p>Dazu öffnet man die Datei <code>settings.json</code> via <code>Strg + Shift + p</code> und der Eingabe von <code>Preferences: Open User Settings (JSON)</code> und trägt ein:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#e6db74">&#34;workbench.colorCustomizations&#34;</span><span style="color:#960050;background-color:#1e0010">:</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;[Default Dark+]&#34;</span>: {
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;editor.lineHighlightBackground&#34;</span>: <span style="color:#e6db74">&#34;#4587de2a&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;editor.lineHighlightBorder&#34;</span>: <span style="color:#e6db74">&#34;#4587de2a&#34;</span>
</span></span><span style="display:flex;"><span>    },
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;[Default Light+]&#34;</span>: {
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;editor.lineHighlightBackground&#34;</span>: <span style="color:#e6db74">&#34;#4587de2a&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;editor.lineHighlightBorder&#34;</span>: <span style="color:#e6db74">&#34;#4587de2a&#34;</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Zeilenhervorhebung ohne Anpassung im Dark Theme mit kaum sichtbarer Umrandung:</p>
<p></p><figure class="image-caption"><picture><source type="webp" srcset="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-zeilenhervorhebung-ohne-anpassung.webp" />
			         <img alt="Screenshot. Kaum sichtbare Umrandung der aktuellen Zeile." src="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-zeilenhervorhebung-ohne-anpassung.webp" title="" width="493" height="21" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</p>
<p>Und mit Anpassung:</p>
<p></p><figure class="image-caption"><picture><source type="webp" srcset="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-zeilenhervorhebung-mit-anpassung.webp" />
			         <img alt="Screenshot. Blauer Hintergrund in der Zeile." src="/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-zeilenhervorhebung-mit-anpassung.webp" title="" width="493" height="21" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</p>
<p>Damit zusätzlich auch noch die Zeilennummer hervorgehoben wird, fügt man hinzu:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#e6db74">&#34;editor.renderLineHighlight&#34;</span><span style="color:#960050;background-color:#1e0010">:</span> <span style="color:#e6db74">&#34;all&#34;</span><span style="color:#960050;background-color:#1e0010">,</span>
</span></span></code></pre></div>
<h3 id="installierte-erweiterungen" data-numberify>Installierte Erweiterungen<a class="anchor ms-1" href="#installierte-erweiterungen"></a></h3>
<ul>
<li><code>streetsidesoftware.code-spell-checker-german</code> für Rechtschreibüberprüfung</li>
</ul>

<h2 id="fazit" data-numberify>Fazit<a class="anchor ms-1" href="#fazit"></a></h2>
<p>Ich habe diesen Blogbeitrag schon mit VSCodium geschrieben und währenddessen hier dokumentiert und ausprobiert.</p>
<p>Mein Fazit bisher ist, dass ich mich mit diesem Editor besser auf Inhalte fokussieren kann, da ich nicht ständig andere Tools benutzen muss. Wie z. B. eine Konsole für das aktuelle Datum und die Uhrzeit fürs Front-Matter, weil man auch Bilder (zumindest in der Markdown-Standard-Syntax) über den Dateiexplorer von VSCodium direkt einfügen kann.</p>
<p>Desweiteren brauche ich kein laufendes Hugo und keinen Browser, in dem die Vorschau angezeigt wird. Diese zeigt zwar genau das Ergebnis, wie es auch später online aussehen wird, aber das ist für meine Sachen meist nur zur Endkontrolle vor dem Veröffentlichen notwendig.</p>
<p>Ich kann mir vorstellen, dass man das Bauen mit Hugo auch noch in VSCodium einrichten könnte, aber ich mache das lieber extern. Ich brauche einen guten Editor zum Bearbeiten, aber keine eierlegende Wollmilchsau für alles zusammen.</p>]]></content:encoded><enclosure url="https://natenom.de/2022/09/wechsel-von-kate-zu-vscodium-fuer-markdown/2022-09-11-vscodium-mit-meinem-wiki-cover.webp" length="205538" type="image/webp"/></item></channel></rss>