Pipewright
A Markdown table formatter for VS Code: every | falls into a straight vertical line — and stays there while you type.
English · Русский
Pipewright adjusts the spaces inside a table so each column keeps a fixed width. It runs as you type, on a command, or on save when editor.formatOnSave is enabled. Only spacing changes — the result stays plain Markdown.
Features
- Alignment markers:
:--- left, :---: center, ---: right, --- none. The separator row is rebuilt to match.
- Honest width for wide characters: CJK, emoji, combining marks and full-width forms are measured by their real on-screen width.
- The tricky cases hold up too: escaped pipes
\|, pipes inside inline code such as `a|b`, ragged rows with unequal cell counts, indented tables, CRLF and LF line endings.
Usage
- Type inside a table — the columns realign on the fly. The row you're editing snaps into place once the caret leaves it. Only real edits trigger alignment: you can move the caret through an aligned table all day — it won't change.
- A draft column — one still empty in every row — is softly tinted. It lives while the caret works in it, turns solid the moment any cell gets content, and collapses once abandoned; the tint vanishing means the table has settled.
- Press
Shift+Alt+F to format the whole document or a selection. The same happens on save when editor.formatOnSave is enabled.
- Press
Shift+Enter inside a table to insert a row.
- Right-click in a Markdown file — the Pipewright submenu holds Insert Table with a size grid; inside a table it also offers Insert Table Row and Format Table at Cursor.
- Press
Cmd/Ctrl+Shift+P and type Pipewright to see every command: Format Table at Cursor, Insert Table, Open Settings.
Settings
Press Cmd/Ctrl+, and search for pipewright, or run Pipewright: Open Settings from the Command Palette.
| Setting |
Default |
What it does |
padding |
1 |
Spaces on each side of a cell's content. |
minimumColumnWidth |
3 |
Minimum column width, in characters. |
delimiterStyle |
filled |
The separator row. filled — dashes fill the column width: \| --- \|. compact — short markers padded with spaces: \| - \|. |
widthMode |
accurate |
How cell width is measured. accurate — real on-screen width: CJK, emoji, combining marks. fast — code points only; faster, but non-Latin text may drift. |
ambiguousWidth |
narrow |
Width of East Asian "ambiguous" characters — Greek, Cyrillic, box drawing. Accurate mode only: narrow is one column, wide is two. |
liveFormatting.enabled |
true |
Realign the table under the cursor as you type. |
liveMode |
onChange |
When live alignment runs. onChange — every edit. onType — only on \| and Enter; needs editor.formatOnType. |
liveFormatting.maxRows |
300 |
Live alignment skips tables larger than this. Format them with Pipewright: Format Table at Cursor, Shift+Alt+F, or on save. |
liveDebounce |
100 |
Delay in milliseconds before realigning in onChange mode. Lower feels snappier, higher saves CPU. |
decorations.enabled |
true |
Accent bar, top cap, faint background and the draft-column tint. Recolor via the pipewright.tableBorder, pipewright.tableBackground and pipewright.draftColumnBackground theme colors. |
Notes
- A table with very long cells — say, a full URL — gets wide once the columns are aligned. VS Code keeps word wrap off for Markdown by default, so such a table runs past the screen edge; bring wrap back with
"[markdown]": { "editor.wordWrap": "on" }.
- The interface speaks English and Russian and follows your VS Code display language.
Pipewright RU
Форматтер Markdown-таблиц для VS Code: каждый символ | встаёт в ровную вертикаль — и остаётся в ней, пока вы печатаете.
English · Русский
Pipewright правит пробелы внутри таблицы так, что каждая колонка держит фиксированную ширину. Работает при наборе текста, по команде и при сохранении файла, если включена настройка editor.formatOnSave. Меняются только пробелы — на выходе остаётся обычный Markdown.
Возможности
- Маркеры выравнивания:
:--- — по левому краю, :---: — по центру, ---: — по правому, --- — без выравнивания. Строка-разделитель перестраивается под них сама.
- Честная ширина широких символов: CJK, эмодзи, составные символы и полноширинные формы измеряются по реальной ширине на экране.
- Сложные случаи не ломают разметку: экранированные
\|, символы | внутри инлайн-кода вроде `a|b`, рваные строки с разным числом ячеек, таблицы с отступом, переводы строк CRLF и LF.
Работа с таблицами
- Печатайте внутри таблицы — колонки выравниваются на лету. Строка, которую вы редактируете, встаёт в ряд, как только курсор уходит с неё. Выравнивание запускают только правки: можно сколько угодно ходить курсором по готовой таблице — она не изменится.
- Столбец-черновик — пока он пуст во всех строках — мягко подсвечен. Он живёт, пока в нём работает курсор, закрепляется с первым же символом содержимого и схлопывается, если его бросить; исчезла подсветка — таблица устоялась.
- Нажмите
Shift+Alt+F, чтобы отформатировать весь документ или выделенный фрагмент. То же самое происходит при сохранении, если включена настройка editor.formatOnSave.
- Нажмите
Shift+Enter внутри таблицы, чтобы вставить строку.
- Щёлкните правой кнопкой мыши в Markdown-файле — в подменю Pipewright живёт Вставить таблицу с выбором размера прямо в сетке, а внутри таблицы появляются ещё Вставить строку таблицы и Выровнять таблицу под курсором.
- Нажмите
Cmd/Ctrl+Shift+P и введите Pipewright — палитра покажет все команды: Выровнять таблицу под курсором, Вставить таблицу, Открыть настройки.
Настройки
Нажмите Cmd/Ctrl+, и найдите pipewright — или выполните команду Pipewright: Открыть настройки из палитры команд.
| Настройка |
По умолчанию |
Что делает |
padding |
1 |
Пробелы с каждой стороны содержимого ячейки. |
minimumColumnWidth |
3 |
Минимальная ширина колонки в символах. |
delimiterStyle |
filled |
Строка-разделитель. filled — дефисы на всю ширину колонки: \| --- \|. compact — короткие маркеры с пробелами: \| - \|. |
widthMode |
accurate |
Как измеряется ширина ячейки. accurate — реальная ширина на экране: CJK, эмодзи, составные символы. fast — только кодовые точки; быстрее, но не-латиница может разъехаться. |
ambiguousWidth |
narrow |
Ширина «неоднозначных» восточноазиатских символов — греческий, кириллица, псевдографика. Только в режиме accurate: narrow — одна колонка, wide — две. |
liveFormatting.enabled |
true |
Выравнивать таблицу под курсором при наборе текста. |
liveMode |
onChange |
Когда срабатывает живое выравнивание. onChange — на каждое изменение. onType — только на \| и Enter; нужен editor.formatOnType. |
liveFormatting.maxRows |
300 |
Таблицы длиннее этого порога живое выравнивание пропускает. Форматируйте их командой Pipewright: Выровнять таблицу под курсором, сочетанием Shift+Alt+F или при сохранении. |
liveDebounce |
100 |
Задержка в миллисекундах перед выравниванием в режиме onChange. Меньше — отзывчивее, больше — легче для процессора. |
decorations.enabled |
true |
Акцентная полоса слева, верхняя линия, лёгкий фон и подсветка столбца-черновика. Цвета настраиваются через pipewright.tableBorder, pipewright.tableBackground и pipewright.draftColumnBackground. |
Заметки
- Таблица с очень длинными ячейками — например, с целым URL — после выравнивания становится широкой. VS Code по умолчанию не переносит строки в Markdown, поэтому такая таблица уедет за край экрана. Вернуть перенос:
"[markdown]": { "editor.wordWrap": "on" }.
- Интерфейс говорит по-английски и по-русски и следует языку интерфейса VS Code.
| |