背景
当从 ChatGPT 复制回答到 Typora 时,经常会在句子的末尾看到向下箭头 ↓ 符号,一开始以为是复制的格式有问题。最近仔细研究才发现原因。
回顾 Markdown 语法
在 Markdown 的严格语法中,有两种“换行”:
- 一种是句子末尾加两个空格再按回车,表示换行;
- 另一种是句子末尾按两下回车,打出一个空行,表示分段。
分段的间距要比换行长。
在 Typora 这种所见即所得的编辑器中,Typora 为我们做出了简化:句子末尾直接按一下回车就是分段(在源码模式中体现为加了一行空行);而按住 shift + enter 才是换行(源码中是紧挨着上一行另起一行,但上一行的末尾并没有两个空格)。
为什么要做这种简化呢,因为很多人并不习惯在句尾按两下空格再回车,所以编辑器为我们做了简化。
Markdown 补充语法:
- 如果句尾不加两个空格直接回车,严格的 Markdown 语法是不会换行的,会把上下两句话放在 一行 中间用 空格 隔开。
- 打出多个空格只能算一个空格(可用
打出多个空格)- 打出多个空行也只换一行(可用
<br>空多行)以上可在 Markdown 在线编辑器 尝试
底层原理
文本其实并没有换行一说,对于计算机,一个文本只有一行。只不过是中间的 \n 字符导致了换行(也可以理解成 <br>)
那么对于 Markdown 的换行语法,实际上就是将 “两个空格 + 一个回车” 渲染成了一个 \n
对于分段,其实就是两个 \n
对比 Typora 和 Obsidian
Obsidain 同样做出了简化,不需要在句尾打两个空格。
Obsidain 没有 shift + enter,在 Obsidian 的编辑视图中,按一下回车是换行,按两下回车是分段。
总结:
Obsidain 的 enter = Typora 的 shift + enter
Obsidain 的两次 enter = Typora 的 enter
拓展
软换行与硬换行
软换行就是没有实际换行(没有 \n 字符),只是一行字符太长超出屏幕宽度,软件为了照顾用户的阅读体验,在视觉上折了一行。
硬换行就是有实际的 \n 字符。
\n 与 \r\n 区别
| 符号 | 名称 | 含义 | 常用系统 |
|---|---|---|---|
\n | LF (Line Feed) | 换到下一行(纵向移动) | Linux /macOS/ Unix |
\r | CR (Carriage Return) | 回到行首(横向位置归零) | 老版 Mac OS |
\r\n | CR + LF | 回到行首 + 下一行(完全换行) | Windows |
结论
Typora 句尾的向下箭头其实就是两个空格,表示此处有一个换行。
163

被折叠的 条评论
为什么被折叠?



