Skip to content

harttle/md-padding

Repository files navigation

Markdown Padding

npm version downloads Check Release Coveralls semantic-release GitHub issues DUB license Commitizen friendly

中文

A tool for formatting Markdown content with padding

  • Ensures consistent spacing before and after Markdown elements like headings, lists, and code blocks.
  • Aligns tables by formatting column spacing properly.
  • Supports formatting inside code blocks and recognizes mathematical expressions, HTML elements, YAML front matter, and fenced code blocks for correct formatting.
  • Applies an extended AST parsing to ensure natural language structures like punctuations and latin characters are padded correctly.

Here's a demo showing changes made by formatting:

raw.md vs formatted.md - Diff

Command Line Interface

Install globally via npm:

npm i -g md-padding

Or run directly using npx:

# Format README.md in place
npx md-padding README.md

For more options:

> npx md-padding --help
md-padding [OPTION]... <FILE>

Options:
  --help, -h      Show help                  [boolean]
  --version       Show version number        [boolean]
  --in-place, -i  Edit file in place         [boolean]
  --ignore-words, -I  Ignore padding for specific words  [string]
  --ignore-patterns, -P  Ignore specific patterns using regex  [string]
  --read-files, -r    Read file list from input, one file per line  [string]

Examples:
  stdout    md-padding README.md
  in-place  md-padding -i README.md
  pipe      cat README.md | md-padding
  ignore-words  cat README.md | md-padding -I '=' '::'
  ignore-patterns  cat README.md | md-padding -P '=' ':+'
  batch format  cat list.txt | md-padding -r -i
  equivalent w/ md-padding -r list.txt -i

Vim Integration

Map the F6 key to format Markdown files:

" Hotkey for md-padding format
noremap <buffer> <F6> <Esc>:%!npx md-padding<CR>

VS Code Integration

Install the Markdown Padding extension.

  • Open Command Palette (Ctrl + Shift + P on Windows/Linux, Cmd + Shift + P on macOS) and run Markdown Padding.
  • Use the default formatting shortcut:
    • Shift + Alt + F (Windows)
    • Shift + Option + F (Mac)
    • Ctrl + Shift + I (Linux)

Configuration

Setting Type Description
mdpadding.ignoreWords Array<string> Words to exclude from padding adjustments
mdpadding.ignorePatterns Array<string> Regular expressions defining patterns to ignore

Q & A

How to ignore a specific section

You can exclude certain sections from formatting using the md-padding-ignore directive:

Some text before the ignored section.
<!--md-padding-ignore-begin-->
a*b=c, b>1 => a&lt;c
<!--md-padding-ignore-end-->
This text will be formatted as usual.