6

为什么你应该试试一句话换一行

 1 year ago
source link: https://sspai.com/post/73957
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

为什么你应该试试一句话换一行 - 少数派

Matrix 首页推荐  

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。  

文章代表作者个人观点,少数派仅对标题和排版略作修改。(最后三段话除外。)


我冒着被编辑部投票放逐的风险,有点抱歉地写下这个大不韪的标题。但我还是要真诚地推荐: 你真的应该试试一句话换一行,半句话换一行,如果感到高兴就拍拍回车换一行。只不过……

这里说的不是最终的带格式文本,而是在写作阶段的 Markdown 版本中这么做。数字也很重要:你应该换并且只换一(1)行。

我去年偶然意识到这个小技巧,之后一直受用,只是担心过于琐碎和个人化,便未单独介绍。但最近发现类似主张至少在十年前便已出现,至今不时被重提(见文末延伸阅读),知名作者 Derek Sivers 本周还在发文提倡;便有动力拿出来做些分享和注解。

用 Markdown 写作的朋友都知道,Markdown 文件中的两个换行,在生成的 HTML 结果中会产生一个新的段落。 那么,一个换行符会产生什么呢? 答案是只会变成一个空格

事实上,不仅那个换行符自己会变成空格,任何紧邻它前后的空格和制表符(tab)——不管是一个还是一百个——都会被一起清理,压缩到只剩一个空格。在 HTML 语境下,这称为「空白字符压缩」(whitespace collapse),在渲染段内文本这种行内格式化上下文(inline formatting context)时,属于默认做法。

技术上的描述听起来有点无聊,但如果在写作过程中巧妙地利用这一点,就可以带来极大的自由。

因为,这意味着你可以像写大纲和写诗一样来写文章;换言之,随意在段落内部回车和缩进,而不会影响到最终渲染结果。1

不过,由于空白字符压缩是基于西文环境开发的规则,如果在中文写作使用本文方法,需要在最后统一清理一下句号后多余的空格,对此全局查找替换即可;虽然多出一步,但相对于益处来说是可以接受的。

下图是一个直观的演示:

1

在左侧的源文件中,分割线上下的版本有明显差异:

  • 上面是语文课本里的原版,只在分段时用了换行;
  • 下面则是本文所建议的「写一句换一行」风格,还通过行首的空格,为具有从属关系的分句设置了缩进。

从右侧的预览可以看出,这两种写法产生的结果没什么区别,但后一种却有一些潜在的好处。回想写作过程,不难发现这种做法则更符合思考的节奏。一句话就是一个事实、一个观点;写完后按回车的动作,则自带一种确认和前进的隐喻。遇到从句较多、逻辑艰涩的场合,多出的留白和层次结构还能起到视觉上的辅助作用,有助于理清思路,避免左右互搏、顾前忘后。

这种做法的好处甚至不限于写文章,在工作中也可以用到。比如,如果你有幸……帮马斯克搞钱,也许这就能帮你避免近视度数加深:

1

其实,不少有经验的写作者本来就有类似习惯,只是一般会用第三方的大纲、思维导图等工具整理好思路,再导出为 Markdown 加工。但既然 Markdown 本身就能当作「草稿纸」来用,连导入导出的过程都省去了,何乐而不为呢?

除了方便谋篇布局,Sivers 的文章还提到了一些额外的好处,这里就直接复述:

  • 方便单独审视每个句子,删减无用废话;
  • 方便控制句子的长短变化,让行文有节奏感;
  • 方便上下移动句子,特别是批量移动;
  • 方便关注句子首尾措辞,让开头更有力、收尾更有余韵。

如果你有一定编程基础,相信更能理解这种做法的价值:在很多语法中,换行和缩进都不影响编译结果(没有针对 Python 和 YAML 的意思……),但确实会有约定俗成的语法风格,其目的就是让代码结构清晰、易于阅读。诸如代码格式器(formatter)、美化器(beautifier)等辅助工具,也是通过添加和调整换行和空格来发挥功能的。

此外,如果你对操作效率有较高要求,「一句换一行」更能锦上添花。因为从古老的 ed 开始,文本编辑器骨子里就更擅长以行为单位的操作;越顺应这种特点、积极分行,也就越能充分发挥编辑器的功能。

首先,在 VS Code 等大多数现代编辑器中,缩进的行会自动添加视觉辅助线,展示上下级从属关系;还可以通过行号旁边的箭头按钮,与上一层级折叠在一起。

其次,编辑器一般都支持用快捷键上下移动行,可以让你手不离键盘就调整句子顺序,省下大量剪切粘贴的功夫。一些常见编辑器的相关快捷键如下表所示:

编辑器快捷键
BBEditControl - /
ObsidianmacOS: Option - /
Windows: Alt - /
Sublime TextmacOS: Control - Command - /
Windows: Ctrl - Shift - /
UlyssesControl - Command - /
VS CodemacOS: Option - /
Windows: Alt - /

对于 Mac 用户而言,即使编辑器本身不支持用快捷键上下移动行(如浏览器中、iA Writer、Typora 等),别忘了 macOS 各处通用的经典 Emacs 快捷键:

  • Control - A 移动到行首;
  • Control - K(kill)剪切从光标位置直到行尾的文本;
  • 在合适位置用 Control - Y(yank)把剪切的文本粘贴出来。

至于创建缩进,除了在光标位于行首时按 Tab 键这一标准做法,大多数编辑器都支持通过 macOS 下的 Command - ] 或 Windows 下的 Ctrl - ] 来增加光标所在行文本的缩进。

afdfa9c93ce0a378864affb749e96bf1.gif

最后,如果你用 git 来管理写作版本,在有分行的情况下,可以很方便地看出哪里发生了修改。否则,就要使用 --word-diff 选项,并且对于中文效果很差。

当然,不是所有的文章都是从头写起。很多时候,我们是在他人的内容上加工和编辑。这种场合,如果将现有文本转换为「一句换一行」的样式,就能方便整理思路、仔细审视。

我们可以用正则表达式实现这一目的。具体而言,可以搜索如下内容:

(。|?|!|:|;|\. |\? |! |: |; )([^\n])

也就是任何中文句号、问号、感叹号、冒号或分号,或相应的英文符号加一个空格,且之后不是紧接着换行([^\n])。

然后批量替换成:

$1\n$2

也就是在上述那些标点(第一对括号里的匹配项,$1)和它们之后的字符(第二对括号里的匹配项,$2)之间加入一个换行符(\n)。2

1

当然,本文的方法并不一定适合所有人(维基百科的贡献者们就分成两派),但也可以作为一个例子说明:人脑是一种湿件,视觉和心理上看似琐碎的提示,可能就会带来意外的帮助。有时,一点留白就能给思考增加深度,一段距离就能给创意留出空间。

最后需要重申——以防我被开除,也方便直接空降来看结尾的朋友——本文讨论的「一句话换一行」是指 Markdown 的使用技巧不是在倡导那种「一句话分一段」的公众号写法。在少数派发文章时,请千万不要尝试后一种做法。

如果硬要尝试会发生什么?你问。

会被褫夺上首页的权利。:P


延伸阅读


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK