Оформление

Блоки кода

Стили, подписи, определение синтаксиса, алиасы, переносы и нумерация кода.

Стили блоков

Значение --code-block-style Оформление
basic Код с отступом без рамки, используется по умолчанию.
simple Одна вертикальная линия слева.
pretty Псевдографическая рамка.

Добавьте :show-name, :show-icon или :show-name;show-icon, чтобы показать подпись. По умолчанию имя и значок скрыты. Для значков нужен Nerd Font, для обычных названий языков он не требуется.

Оформление блока кода

mdv --no-config --theme catppuccin --cols 64 --code-block-style basic example.md
Вывод mdvВерсия 6.1.1
  fn main() {
      println!("hello, mdv");
  }
Исходный Markdown
```rust
fn main() {
    println!("hello, mdv");
}
```

Подписи и значки кода

Скрытые подписи, название языка, значок или оба.

mdv --no-config --theme catppuccin --cols 64 --code-block-style pretty example.md
Вывод mdvВерсия 6.1.1
╭─────────────────────────────╮
│ fn main() {                 │
│     println!("hello, mdv"); │
│ }                           │
╰─────────────────────────────╯
Исходный Markdown
```rust
fn main() {
    println!("hello, mdv");
}
```

Номера строк кода

Нумерация начинается заново в каждом блоке. --code-line-numbers без значения нумерует отображённые строки, включая продолжения после переноса. source нумерует физические строки кода и оставляет продолжения без номера. separator добавляет разделитель. Режимы объединяются как source;separator и работают во всех трёх стилях.

Номера строк кода

mdv --no-config --theme catppuccin --cols 44 example.md
Вывод mdvВерсия 6.1.1
  fn main() {
      let message = "A long line of code tha
        t wraps to the available terminal wi
        dth";
      println!("{message}");
  }
Исходный Markdown
```rust
fn main() {
    let message = "A long line of code that wraps to the available terminal width";
    println!("{message}");
}
```

Отступ после переноса

--wrap выбирает места разрыва кода. --code-wrap-indent управляет продолжениями: none не добавляет дополнительный отступ, base сохраняет исходный, double добавляет к исходному ещё два пробела (режим по умолчанию). Номера строк, рамки, поля и окружающие списки уменьшают доступную ширину до переноса.

Отступ продолжений кода

mdv --no-config --theme catppuccin --cols 44 --code-wrap-indent none example.md
Вывод mdvВерсия 6.1.1
  fn main() {
      let message = "A long line of code tha
  t wraps to the available terminal width";
      println!("{message}");
  }
Исходный Markdown
```rust
fn main() {
    let message = "A long line of code that wraps to the available terminal width";
    println!("{message}");
}
```

Определение языка и цвета синтаксиса

mdv сначала использует указанный язык, пользовательские и встроенные алиасы, затем эвристическое определение. --no-code-guessing оставляет неизвестные блоки простым текстом. Для явно указанных plain/Markdown-блоков используется отдельная обработка текста. Свои определения синтаксиса добавляют языки, а темы задают цвета кода независимо от цветов документа.

Определение языка

mdv --no-config --theme catppuccin --cols 64 example.md
Вывод mdvВерсия 6.1.1
  #!/usr/bin/env python3
  def greet(name):
      print(f"Hello, {name}!")
  greet("mdv")
Исходный Markdown
```
#!/usr/bin/env python3
def greet(name):
    print(f"Hello, {name}!")
greet("mdv")
```

Свои значки, подписи и алиасы

--custom-code-block принимает записи language:icon=...,label=...,aliases=..., разделённые ;. Свойства разделяются запятыми, алиасы символом |. default:icon=... задаёт значок неизвестного языка. Эти определения изменяют подписи и алиасы поиска, но не грамматику подсветки.

Свои подписи кода

mdv --no-config --theme catppuccin --cols 64 --code-block-style 'pretty:show-name;show-icon' example.md
Вывод mdvВерсия 6.1.1
╭─  Rust ────────────────────╮
│ fn main() {                 │
│     println!("hello, mdv"); │
│ }                           │
╰─────────────────────────────╯
Исходный Markdown
```rust
fn main() {
    println!("hello, mdv");
}
```
custom_code_block:
  python:
    icon: "*"
    label: Python
    aliases: [py, py3]
  default:
    icon: "?"

Пропущенные свойства объединяются с настройками меньшего приоритета. null очищает свойство или запись; корневые null и {} очищают всю пользовательскую настройку. aliases: [] или CLI aliases=[] очищают унаследованные алиасы. Цвет подписи задаёт code_block.label, а рамки code_block.border в схеме темы.