FunkcjeCennikDokumentacjaBlog
Pobierz mote
← Blog
Projektowanie·5 sierpnia 2026·4 min czytania

Edycja tabel, która zachowuje dokładnie ich ręcznie wpisaną postać

Czy zdarzyło Ci się poprawić w tabeli tylko jedno słowo, a potem zobaczyć całą tabelę w git diff? Tabele to element Markdowna, który najczęściej traci swój układ.

m
mote
Widok komórek tabeli zaznaczonych prostokątnie w trybie podglądu na żywo. Na niebiesko wypełnione są tylko zaznaczone komórki, a zdania poza tabelą nie należą do zaznaczenia.
Widok komórek tabeli zaznaczonych prostokątnie w trybie podglądu na żywo. Na niebiesko wypełnione są tylko zaznaczone komórki, a zdania poza tabelą nie należą do zaznaczenia.

W tabelach Markdown pozostają ślady ręcznego formatowania. Wyrównujemy pionowo kreski, dopasowujemy szerokość komórek spacjami, a czasem nawet celowo zaburzamy wyrównanie. Sam ten układ jest częścią tekstu źródłowego pliku.

Edytor wyświetlający tabelę jako siatkę musi jednak zinterpretować tekst źródłowy. Jeśli podczas ponownego zapisywania automatycznie wyrówna tabelę, zmieni również układ utworzony przez człowieka.

Znanym przykładem jest automatyczne wyrównywanie tabel w Typorze. Aby dopasować szerokości kolumn, program wypełnia przestrzeń między kreskami spacjami, a wynik zapisuje w pliku. Problem opisano w publicznym zgłoszeniu, a osobno pojawiła się też prośba o możliwość wyłączenia tej funkcji w opcjach.

mote postanowił tego nie robić. Na ekranie pokazuje tabelę jako siatkę, ale w pliku pozostawia dokładnie taki tekst źródłowy, jaki został wpisany ręcznie.

Tylko edytowana komórka pokazuje tekst źródłowy

Po kliknięciu tabeli w trybie podglądu na żywo siatka pozostaje bez zmian. Tylko komórka, w której znajduje się karetka, zmienia się w tekst źródłowy, a kreski pionowe są wyświetlane jaśniejszym kolorem.

Do innych komórek można przechodzić klawiszem Tab lub klawiszami strzałek. Naciśnięcie Enter w ostatnim wierszu tworzy nowy wiersz.

Zaznaczanie również działa naturalnie. Przeciągnięcie wewnątrz komórki zaznacza tylko tekst. Przeciągnięcie poza komórkę zaznacza wiele komórek w prostokątnym obszarze, a po skopiowaniu tylko zaznaczone komórki zostają utworzone jako tabela. Pierwszy wiersz staje się nagłówkiem, a wyrównanie zostaje zachowane.

Gdy zaznaczenie rozpoczęte poza tabelą dociera do tabeli, zaznaczana jest cała tabela. Nie dochodzi do niezręcznego zaznaczenia tylko połowy tabeli.

Całe wiersze i kolumny również można przenosić. Po najechaniu kursorem na tabelę uchwyty pojawiają się po lewej stronie wierszy i nad kolumnami. Wystarczy je przeciągnąć w wybrane miejsce.

Menu wyświetlane po kliknięciu prawym przyciskiem myszy pozwala dodawać i usuwać wiersze oraz kolumny. Każde działanie jest traktowane jako pojedyncza edycja, dzięki czemu można je cofnąć za jednym razem. Tekst źródłowy nietkniętych komórek pozostaje bez zmian. Te same funkcje można znaleźć również w palecie poleceń.

Ekran palety poleceń po wpisaniu „tabela” — polecenia utworzenia tabeli i dodania wiersza poniżej są wyświetlane wraz z przypisanymi skrótami klawiaturowymi, a w dokumencie w tle widać tabelę narysowaną jako siatkę
Ekran palety poleceń po wpisaniu „tabela” — polecenia utworzenia tabeli i dodania wiersza poniżej są wyświetlane wraz z przypisanymi skrótami klawiaturowymi, a w dokumencie w tle widać tabelę narysowaną jako siatkę

Przez jedną kreskę tabela się rozsypała

Początkowo każda kreska pionowa wpisana w tabeli była automatycznie poprzedzana ukośnikiem odwrotnym. Braliśmy pod uwagę wyłącznie przypadek wstawiania znaku kreski pionowej wewnątrz komórki.

Jednak dla osoby piszącej tabelę Markdown bezpośrednio kreska pionowa jest znakiem rozdzielającym komórki. Po wpisaniu nowego wiersza także separatory zmieniały się w zwykłe znaki i tabela się rozpadała.

Dlatego zmieniliśmy to tak, aby uwzględniane było miejsce wpisania znaku.

Kreska pionowa wpisana na początku wiersza jest ignorowana. Jeśli dalej znajduje się już separator, karetka przechodzi do następnej komórki. Znak jest poprzedzany ukośnikiem odwrotnym tylko wtedy, gdy kreska pionowa zostanie wpisana w zdaniu wewnątrz komórki. Natomiast wiersz rozpoczynający się kreską pionową, wpisany bezpośrednio pod tabelą, staje się nowym wierszem istniejącej tabeli.

Takie problemy trudno znaleźć, patrząc wyłącznie na kod. Dlatego stworzyliśmy testy, które klikają tabelę i przeciągają uchwyty w rzeczywistym oknie. Sprawdzają one, czy tabela jest prawidłowo wyświetlana, czy wiersze i kolumny przesuwają się we właściwym kierunku oraz czy aplikacja nie ulega przy tym awarii.

Rezultat staje się jeszcze bardziej widoczny po zapisaniu. Jeśli zmienisz tylko jedno słowo w jednej komórce, w git diff pojawi się wyłącznie ten jeden wiersz.

Spacje wyrównujące kolumny, gwiazdki punktorów i dwie spacje na końcu wiersza również pozostają nietknięte. Jeśli plik nie miał końcowego znaku nowego wiersza, nawet ten stan zostaje zachowany. Na pasku stanu można od razu zobaczyć, ile bajtów zmieniło się podczas zapisywania.

Pasek stanu i git diff po zmianie słowa w jednej komórce tabeli w trybie podglądu na żywo i zapisaniu pliku. Pasek stanu pokazuje +8 −6 B, a w diffie widnieje tylko jeden wiersz zawierający poprawioną komórkę oraz jedno zdanie.
Pasek stanu i git diff po zmianie słowa w jednej komórce tabeli w trybie podglądu na żywo i zapisaniu pliku. Pasek stanu pokazuje +8 −6 B, a w diffie widnieje tylko jeden wiersz zawierający poprawioną komórkę oraz jedno zdanie.

Są też funkcje, które powstały, a potem zostały usunięte

Przez pewien czas można było regulować szerokość kolumn za pomocą myszy. Teraz tej funkcji już nie ma.

Markdown nie ma składni pozwalającej zapisać szerokość kolumny. Aby ją zapamiętać, trzeba byłoby utworzyć obok dokumentu osobny plik. Wtedy zawartość tego folderu byłaby kompletna tylko w obecności mote. Po przeniesieniu przez git, otwarciu na innym urządzeniu lub użyciu innego edytora ta informacja by zniknęła.

Obramowanie tabeli rozwiązaliśmy za pomocą ustawień aplikacji. Można wybrać wyświetlanie pełnej siatki albo rysowanie linii wyłącznie pod nagłówkiem. To samo ustawienie jest stosowane na ekranie oraz podczas eksportowania do PDF i HTML.

Zasada jest prosta. Wartości, których nie da się zapisać w Markdownie, umieszczamy w ustawieniach aplikacji albo w ogóle nie tworzymy takiej funkcji.

Dlatego usunęliśmy funkcję regulowania szerokości kolumn. Szerokość kolumn jest ustalana automatycznie na podstawie zawartości. Dokument do końca pozostaje jednym plikiem .md.

Edytor, który przepisuje tabelę, aby wyglądała ładnie, i edytor, który zachowuje wpisaną przeze mnie tabelę dokładnie w jej pierwotnej postaci.

mote wybrał ten drugi.

← StarszeDlaczego symbole Markdown pokazujemy tylko w słowie, którego dotyka kursorNowsze →Aby wyglądał tak samo niezależnie od sposobu instalacji, postanowiliśmy dołączyć GTK
Bądź na bieżąco przez RSS.
Nic poza pisaniem.
Polski
© 2026 mote