2021-10-14 06:13:50 +08:00
---
2021-10-16 04:48:57 +08:00
description: The least code the better, but sometimes you just need multiple lines.
2021-10-15 03:20:21 +08:00
icon: terminal-box-line
2021-10-14 06:13:50 +08:00
---
2020-08-19 03:39:41 +08:00
# CodeBlock
2021-01-25 17:35:52 +08:00
[![Version ](https://img.shields.io/npm/v/@tiptap/extension-code-block.svg?label=version )](https://www.npmjs.com/package/@tiptap/extension-code-block)
[![Downloads ](https://img.shields.io/npm/dm/@tiptap/extension-code-block.svg )](https://npmcharts.com/compare/@tiptap/extension-code-block?minimal=true)
2020-09-10 23:29:34 +08:00
With the CodeBlock extension you can add fenced code blocks to your documents. It’ ll wrap the code in `<pre>` and `<code>` HTML tags.
2020-10-02 21:12:01 +08:00
Type < code > ``` </ code > (three backticks and a space) or < code > ∼∼∼ </ code > (three tildes and a space) and a code block is instantly added for you. You can even specify the language, try writing < code > ``` css </ code > . That should add a `language-css` class to the `<code>` -tag.
2020-09-10 23:29:34 +08:00
2021-10-02 07:20:09 +08:00
::: warning No syntax highlighting
The CodeBlock extension doesn’ t come with styling and has no syntax highlighting built-in. Try the [CodeBlockLowlight ](/api/nodes/code-block-lowlight ) extension if you’ re looking for code blocks with syntax highlighting.
2020-09-10 23:29:34 +08:00
:::
2020-08-20 21:44:08 +08:00
2020-09-23 15:52:04 +08:00
## Installation
```bash
npm install @tiptap/extension -code-block
```
2020-09-23 18:03:03 +08:00
## Settings
2021-10-02 07:20:09 +08:00
2022-01-05 17:21:23 +08:00
### languageClassPrefix
Adds a prefix to language classes that are applied to code tags.
Default: `'language-'`
2021-10-02 07:20:09 +08:00
```js
CodeBlock.configure({
2022-01-05 17:21:23 +08:00
languageClassPrefix: 'language-',
2021-10-02 07:20:09 +08:00
})
```
2022-01-05 17:21:23 +08:00
### exitOnTripleEnter
Define whether the node should be exited on triple enter.
2021-10-02 07:20:09 +08:00
2022-01-05 17:21:23 +08:00
Default: `true`
2021-10-02 07:20:09 +08:00
```js
CodeBlock.configure({
2022-01-05 17:21:23 +08:00
exitOnTripleEnter: false,
})
```
### exitOnArrowDown
Define whether the node should be exited on arrow down if there is no node after it.
Default: `true`
```js
CodeBlock.configure({
exitOnArrowDown: false,
})
```
### HTMLAttributes
Custom HTML attributes that should be added to the rendered HTML tag.
```js
CodeBlock.configure({
HTMLAttributes: {
class: 'my-custom-class',
},
2021-10-02 07:20:09 +08:00
})
```
2020-08-20 21:44:08 +08:00
## Commands
2021-10-02 06:14:44 +08:00
### setCodeBlock()
Wrap content in a code block.
```js
editor.commands.setCodeBlock()
```
### toggleCodeBlock()
Toggle the code block.
```js
editor.commands.toggleCodeBlock()
```
2020-08-20 21:44:08 +08:00
2020-09-10 17:24:33 +08:00
## Keyboard shortcuts
2021-10-02 04:57:27 +08:00
| Command | Windows/Linux | macOS |
| --------------- | ----------------------------- | ------------------------- |
| toggleCodeBlock | `Control` `Alt` `C` | `Cmd` `Alt` `C` |
2020-09-10 22:54:53 +08:00
2020-09-21 22:59:28 +08:00
## Source code
2021-04-21 21:31:11 +08:00
[packages/extension-code-block/ ](https://github.com/ueberdosis/tiptap/blob/main/packages/extension-code-block/ )
2020-09-10 22:54:53 +08:00
## Usage
2021-10-19 00:01:47 +08:00
https://embed.tiptap.dev/preview/Nodes/CodeBlock