Pixiv @chokei
专栏 - Examples
分类
标签
0x400 AI API Astro astro B2 Blogging Bot Building Ciallo cloudflare Customization Default Demo Essay Example Folo Fuwari fuwari Giscus github Guide IDEA ipv6 LeavesMC Link Markdown MC Minecraft mTLS MySQL netlify Picture Plugin Replay serenbanka server SSL tunnelbroker Video workers 千恋万花 反代 字体 开源 记录 豪赤 随笔
1009 字
5 min
Expressive Code Example
Here, we’ll explore how code blocks look using Expressive Code. The provided examples are based on the official documentation, which you can refer to for further details. 在这里,我们将探索使用 Expressive Code 的代码块显示效果。提供的示例基于官方文档,您可以参考该文档获取更多细节。
Expressive Code
Syntax Highlighting
语法高亮
Regular syntax highlighting
常规语法高亮
console.log('This code is syntax highlighted!')
Rendering ANSI escape sequences
渲染 ANSI 转义序列
ANSI colors:- Regular: Red Green Yellow Blue Magenta Cyan- Bold: Red Green Yellow Blue Magenta Cyan- Dimmed: Red Green Yellow Blue Magenta Cyan
256 colors (showing colors 160-177):160 161 162 163 164 165166 167 168 169 170 171172 173 174 175 176 177
Full RGB colors:ForestGreen - RGB(34, 139, 34)
Text formatting: Bold Dimmed Italic Underline
Editor & Terminal Frames
编辑器与终端框架
Editor & Terminal Frames 编辑器与终端框架
Code editor frames
代码编辑器框架
console.log('Title attribute example')
<div>File name comment example</div>
Terminal frames
终端框架
echo "This terminal frame has no title"
Write-Output "This one has a title!"
Overriding frame types
覆盖框架类型
echo "Look ma, no frame!"
# Without overriding, this would be a terminal framefunction Watch-Tail { Get-Content -Tail 20 -Wait $args }New-Alias tail Watch-Tail
Text & Line Markers
文本与行标记
Marking full lines & line ranges
标记整行与行范围
// Line 1 - targeted by line number// Line 2// Line 3// Line 4 - targeted by line number// Line 5// Line 6// Line 7 - targeted by range "7-8"// Line 8 - targeted by range "7-8"
Selecting line marker types (mark, ins, del)
选择行标记类型(mark, ins, del)
function demo() { console.log('this line is marked as deleted') // This line and the next one are marked as inserted console.log('this is the second inserted line')
return 'this line uses the neutral default marker type'}
Adding labels to line markers
为行标记添加标签
<button role="button" {...props} value={value} className={buttonClassName} disabled={disabled} active={active}> {children && !active && (typeof children === 'string' ? <span>{children}</span> : children)}</button>
Adding long labels on their own lines
在独立行添加长标签
<button role="button" {...props}
value={value} className={buttonClassName}
disabled={disabled} active={active}>
{children && !active && (typeof children === 'string' ? <span>{children}</span> : children)}</button>
Using diff-like syntax
使用类似 diff 的语法
this line will be marked as insertedthis line will be marked as deletedthis is a regular line
--- a/README.md+++ b/README.md@@ -1,3 +1,4 @@+this is an actual diff file-all contents will remain unmodified no whitespace will be removed either
Combining syntax highlighting with diff-like syntax
结合语法高亮与类似 diff 的语法
function thisIsJavaScript() { // This entire block gets highlighted as JavaScript, // and we can still add diff markers to it! console.log('Old code to be removed') console.log('New and shiny code!')}
Marking individual text inside lines
标记行内特定文本
function demo() { // Mark any given text inside lines return 'Multiple matches of the given text are supported';}
Regular expressions
正则表达式
console.log('The words yes and yep will be marked.')
Escaping forward slashes
转义正斜杠
echo "Test" > /home/test.txt
Selecting inline marker types (mark, ins, del)
选择行内标记类型(mark, ins, del)
function demo() { console.log('These are inserted and deleted marker types'); // The return statement uses the default marker type return true;}
Word Wrap
自动换行
Configuring word wrap per block
按代码块配置自动换行
// Example with wrapfunction getLongString() { return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide'}
// Example with wrap=falsefunction getLongString() { return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide'}
Configuring indentation of wrapped lines
配置换行后的缩进
// Example with preserveIndent (enabled by default)function getLongString() { return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide'}
// Example with preserveIndent=falsefunction getLongString() { return 'This is a very long string that will most probably not fit into the available space unless the container is extremely wide'}
Collapsible Sections
可折叠部分
5 collapsed lines
// All this boilerplate setup code will be collapsedimport { someBoilerplateEngine } from '@example/some-boilerplate'import { evenMoreBoilerplate } from '@example/even-more-boilerplate'
const engine = someBoilerplateEngine(evenMoreBoilerplate())
// This part of the code will be visible by defaultengine.doSomething(1, 2, 3, calcFn)
function calcFn() { // You can have multiple collapsed sections3 collapsed lines
const a = 1 const b = 2 const c = a + b
// This will remain visible console.log(`Calculation result: ${a} + ${b} = ${c}`) return c}
4 collapsed lines
// All this code until the end of the block will be collapsed againengine.closeConnection()engine.freeMemory()engine.shutdown({ reason: 'End of example boilerplate code' })
Line Numbers
行号
Displaying line numbers per block
按代码块显示行号
// This code block will show line numbersconsole.log('Greetings from line 2!')console.log('I am on line 3')
// Line numbers are disabled for this blockconsole.log('Hello?')console.log('Sorry, do you know what line I am on?')
Changing the starting line number
更改起始行号
console.log('Greetings from line 5!')console.log('I am on line 6')
Expressive Code Example
https://fuwari.oh1.top/posts/default/expressive-code/