FunktionenPreiseDokumentationBlog
mote holen
← Blog
Design·5. August 2026·5 Min. Lesezeit

Tabellen bearbeiten, ohne die manuell eingegebene Formatierung zu verändern

Haben Sie schon einmal nur ein einziges Wort in einer Tabelle geändert und anschließend die gesamte Tabelle im git diff gesehen? Tabellen gehören zu den Stellen, die in Markdown am häufigsten aus dem Takt geraten.

m
mote
Eine Ansicht, in der die Zellen einer Tabelle im Live-Modus rechteckig ausgewählt sind. Nur die ausgewählten Zellen sind blau ausgefüllt, und der Text außerhalb der Tabelle gehört nicht zur Auswahl.
Eine Ansicht, in der die Zellen einer Tabelle im Live-Modus rechteckig ausgewählt sind. Nur die ausgewählten Zellen sind blau ausgefüllt, und der Text außerhalb der Tabelle gehört nicht zur Auswahl.

In Markdown-Tabellen bleiben die Spuren manueller Formatierung erhalten. Man richtet die senkrechten Striche ordentlich aus, passt die Breite der Zellen mit Leerzeichen an und bringt die Ausrichtung manchmal sogar absichtlich durcheinander. Genau diese Form ist der ursprüngliche Inhalt der Datei.

Ein Editor, der Tabellen als Raster darstellt, muss den ursprünglichen Text jedoch interpretieren. Wenn er die Tabelle beim erneuten Speichern automatisch ausrichtet, verändert sich auch die vom Menschen geschaffene Form.

Die automatische Tabellenausrichtung von Typora ist als ein solcher Fall bekannt. Um die Spaltenbreiten anzugleichen, werden die Zwischenräume zwischen den senkrechten Strichen mit Leerzeichen aufgefüllt, und das Ergebnis wird in der Datei gespeichert. Dazu gibt es ein öffentlich dokumentiertes Issue sowie eine separate Anfrage nach einer Option, mit der sich dieses Verhalten abschalten lässt.

mote hat sich entschieden, das nicht zu tun. Auf dem Bildschirm wird die Tabelle als Raster angezeigt, in der Datei bleibt jedoch der von Hand geschriebene Originaltext unverändert erhalten.

Nur die Zelle, die Sie bearbeiten, wird als Quelltext angezeigt

Auch wenn Sie im Live-Modus auf eine Tabelle klicken, bleibt das Raster bestehen. Nur die Zelle mit dem Cursor wechselt zur Quelltextansicht, und die senkrechten Striche werden blass dargestellt.

Mit Tab oder den Pfeiltasten können Sie zu einer anderen Zelle wechseln. Wenn Sie in der letzten Zeile Enter drücken, wird eine neue Zeile angelegt.

Auch die Auswahl verhält sich natürlich. Wenn Sie innerhalb einer Zelle ziehen, wird nur der Text ausgewählt. Ziehen Sie über die Zelle hinaus, werden mehrere Zellen rechteckig ausgewählt, und beim Kopieren wird nur aus den ausgewählten Zellen eine Tabelle erstellt. Die erste Zeile wird zur Kopfzeile, und auch die Ausrichtung bleibt erhalten.

Wenn eine außerhalb der Tabelle begonnene Auswahl die Tabelle erreicht, wird die gesamte Tabelle ausgewählt. Es wird nicht auf unbeholfene Weise nur eine Hälfte der Tabelle erfasst.

Auch ganze Zeilen und Spalten lassen sich verschieben. Wenn Sie den Mauszeiger über die Tabelle bewegen, erscheinen links neben den Zeilen und oberhalb der Spalten Griffe. Ziehen Sie sie einfach an die gewünschte Position.

Über das Kontextmenü können Sie Zeilen und Spalten hinzufügen oder löschen. Jede Aktion wird als eine einzige Bearbeitung behandelt und lässt sich daher in einem Schritt rückgängig machen. Der Quelltext nicht berührter Zellen bleibt dabei unverändert. Dieselben Funktionen finden Sie auch in der Befehlspalette.

Ansicht der Befehlspalette nach der Eingabe von „Tabelle“ — „Tabelle erstellen“ und „Tabelle: Zeile darunter“ werden jeweils mit ihren Tastenkürzeln angezeigt, während im Dokument dahinter eine als Raster dargestellte Tabelle zu sehen ist
Ansicht der Befehlspalette nach der Eingabe von „Tabelle“ — „Tabelle erstellen“ und „Tabelle: Zeile darunter“ werden jeweils mit ihren Tastenkürzeln angezeigt, während im Dokument dahinter eine als Raster dargestellte Tabelle zu sehen ist

Wegen eines einzigen senkrechten Strichs ist die Tabelle zusammengebrochen

Anfangs wurde jedem senkrechten Strich, der innerhalb einer Tabelle eingegeben wurde, ausnahmslos ein Backslash vorangestellt. Das lag daran, dass wir nur an den Fall gedacht hatten, in dem ein senkrechter Strich als Zeichen innerhalb einer Zelle eingegeben wird.

Für Menschen, die Markdown-Tabellen direkt schreiben, ist der senkrechte Strich jedoch das Zeichen, das Zellen voneinander trennt. Beim Eingeben einer neuen Zeile wurden sogar die Trennzeichen in gewöhnliche Zeichen umgewandelt, und die Tabelle brach zusammen.

Deshalb haben wir das Verhalten so geändert, dass die Eingabeposition berücksichtigt wird.

Wenn Sie an einer Stelle, an der eine Zeile beginnt, einen senkrechten Strich eingeben, wird er ignoriert. Ist dahinter bereits ein Trennzeichen vorhanden, wird der Cursor in die nächste Zelle bewegt. Nur wenn Sie einen senkrechten Strich innerhalb eines Satzes in einer Zelle eingeben, wird er maskiert. Wenn Sie direkt unterhalb einer Tabelle eine mit einem senkrechten Strich beginnende Zeile schreiben, wird sie als neue Zeile an die vorhandene Tabelle angefügt.

Solche Probleme lassen sich nur schwer allein durch das Lesen des Codes finden. Deshalb haben wir Tests erstellt, die in einem echten Fenster auf die Tabelle klicken und an den Griffen ziehen. Sie prüfen, ob die Tabelle korrekt dargestellt wird, ob sich Zeilen und Spalten in die gewünschte Richtung bewegen und ob die App währenddessen nicht abstürzt.

Nach dem Speichern wird das Ergebnis noch deutlicher. Wenn Sie nur ein Wort in einer einzigen Zelle ändern, erscheint auch im git diff nur diese eine Zeile.

Die Leerzeichen zur Ausrichtung der Spalten, die Sternchen der Aufzählungszeichen und auch die zwei Leerzeichen am Zeilenende bleiben unverändert. Wenn die Datei am Ende keinen Zeilenumbruch hatte, bleibt sogar dieser Zustand erhalten. In der Statuszeile können Sie sofort sehen, wie viele Bytes beim Speichern geändert wurden.

Statuszeile und git diff nach dem Ändern und Speichern eines Wortes in einer Tabellenzelle im Live-Modus. Die Statuszeile zeigt +8 −6 B, und im diff erscheinen nur die eine Zeile mit der bearbeiteten Zelle und ein Satz.
Statuszeile und git diff nach dem Ändern und Speichern eines Wortes in einer Tabellenzelle im Live-Modus. Die Statuszeile zeigt +8 −6 B, und im diff erscheinen nur die eine Zeile mit der bearbeiteten Zelle und ein Satz.

Es gibt auch eine Funktion, die wir eingebaut und später wieder entfernt haben

Eine Zeit lang ließ sich die Spaltenbreite mit der Maus anpassen. Diese Funktion gibt es inzwischen nicht mehr.

Markdown besitzt keine Syntax zum Speichern der Spaltenbreite. Um sich die Breite zu merken, müsste neben dem Dokument eine separate Datei angelegt werden. Dadurch wäre der Ordner nur noch mit mote vollständig. Wenn Sie ihn mit git verschieben, auf einem anderen Gerät öffnen oder einen anderen Editor verwenden, fehlen diese Informationen.

Die Tabellenrahmen haben wir über die App-Einstellungen gelöst. Sie können wählen, ob die Tabelle als Raster angezeigt oder nur unterhalb der Kopfzeile eine Linie gezeichnet werden soll. Dieselbe Einstellung gilt auch für die Darstellung auf dem Bildschirm sowie für den PDF- und HTML-Export.

Der Maßstab ist einfach. Werte, die sich nicht in Markdown festhalten lassen, gehören in die App-Einstellungen oder werden gar nicht erst als Funktion umgesetzt.

Deshalb haben wir die Funktion zum Anpassen der Spaltenbreite entfernt. Die Spaltenbreite wird automatisch anhand des Inhalts bestimmt. Und das Dokument bleibt bis zum Schluss eine einzige .md-Datei.

Ein Editor, der eine Tabelle hübsch neu schreibt, und ein Editor, der die von mir geschriebene Tabelle unverändert bewahrt.

mote hat sich für den zweiten entschieden.

← ÄlterWarum Markdown-Zeichen nur im Wort unter dem Cursor angezeigt werdenNeuer →Damit es in jedem Installationsformat gleich aussieht, liefern wir GTK mit
Bleiben Sie per RSS auf dem Laufenden.
Nur das Schreiben bleibt.
Deutsch
© 2026 mote