给文字工作者的VSCode入门教程
本文正在写作中。
慢慢有朋友使用我做的VSCode校对扩展AI proofreader。他们常常不会装软件、设置软件。我写这个网页,免得每次重复指导。
快速安装和体验#
对于已经确信要使用VSCode的朋友,请如下安装、体验:
- 到官网下载页面下载安装程序。一般Windows电脑可下载
System Installer
下的x64
这个版本(对应用户为系统管理员、64位处理器)。 - 双击安装。通常按默认选项安装即可。安装后可能有一些推荐,关闭窗口即可。
- 如需中文界面可安装中文语言扩展。点开左侧四个小方块形的扩展浏览按钮(Ctrl+Shift+X),搜索Chinese,即可看到微软官方的扩展,点击右侧
install
按钮安装即可: - 打开一个项目文件夹,或者叫工作空间。VSCode可以处理单个文件(可能会有安全和功能受限的提示),但它最常见的用途是程序员用来管理代码库,也就是一个文件夹下的所有内容。文字工作者也可以用来管理写作项目、编辑项目等,比如把编辑一本书相关的所有材料放在一个文件夹下,然后用VSCode菜单File => Open Folder(Ctrl+K Ctrl+O)打开这个文件夹。
- 新建Markdown文件。点开左侧两张纸形的文件浏览按钮(Ctrl+Shift+E),就能看到文件夹/工作空间浏览窗口,鼠标经过时能看到上边有增加文件和文件夹的按钮;跟大多数编辑软件一样,也可以直接用快捷键Ctrl+N来新建文件。新建文件时使用
.md
为后缀,即是我们下面要讲到的Markdown文件。按照程序员的最佳实践,每个项目应该在根目录上新建一个README.md文件,对项目进行说明,记录项目信息等。
如果你急着体验VSCode的强大功能,可以直接阅读功能与操作一节。
除了Word和WPS,还有很多有趣的写作工具#
你可能会问:我为什么要用这个看起来很复杂、过于技术化的编辑器?我只想好好写字、编辑文字,我不需要太多功能。
文字工作者常常只用Word、WPS处理文字,甚至分不清这两个软件。这些朋友错过了很多好工具。当然,这常常不重要。那我换一种说法:他们错过了一些相当好玩的东西。
在这个网页,我面向文字工作者介绍VSCode,这是我用得最多的文字处理软件。在与人合作编辑的场合,我常常要使用LibreOffice Writer、WPS、Word三者中的一个。 1 在处理特大文件时偶尔用EmEditor,某些涉及中文特性的处理也用TextPro。 2 3 此外我就用VSCode,包括编辑和校对书稿、管理编辑项目、做笔记、写博客等,当然也用来编程和管理开源项目。
Word、WPS的好处和问题#
Word、WPS、Libreoffice Writer是面向办公的、所见即所得的(WYSIWYG, What You See Is What You Get)“字处理软件”,特点是用户一遍打字,一边就可以排版,并立即看到最终打印到纸上的效果。——手写文书自动化正是此类软件的初心。
这是此类软件的最大好处。
但是,这类软件有一些麻烦的问题。 因格式繁杂,解析、渲染困难,导致很多不便,如:
- 不同用户可能使用不同的方式来实现同一种效果,导致无法统一操作、复用。比如很多朋友不会使用标题段落样式,而是用模拟的办法来做,“二号宋体加粗居中表示一级标题”,“四号黑体居中表示三级标题”,看起来没问题,但不能自动生成目录、不能查看大纲视图(对于长文档来说,大纲能让你始终保持整体感),也难以跟别人的一级标题、三级标题保持一致。
- 许多快捷操作受限。比如Word、WPS可以多光标/列式选择、复制,却不能多光标/列式粘贴、输入。又比如文件内的查找、替换能力有限,Word、WPS直到现在都不支持正则表达式,一种最流行的文本匹配语言;Libreoffice Writer提供有限支持。
- 软件自身很少有多文件批量操作,如批量查找替换、内容帅选。如果文档比较长,机器老旧,单文件操作都可能困难。
此类软件的好处是“所见即所得”,但并非总是所见即所得:
- 同一个文件在不同软件中的排版效果常常不同,甚至有错乱、打不开。
- 甚至同一个软件,文件格式版本与软件版本之间也有兼容性问题。
Word、WPS是闭源商业软件,Libreoffice Writer虽然是开源软件,却严格对标Word(WPS同样严格对标Word),所以整体上比较沉闷,缺乏创新。这也是很多问题的原因。
VSCode + Markdown的问题和好处#
本文把VSCode看作文本编辑器,就文字工作者而言,目前最常用的文本类型是Markdown,一种轻量级文本格式标记语言。所以,本文的假设情境是VSCode + Markdown写作。
Markdown是“文本格式”是说,用文本文件编辑器打开时,你看到的通常是没有格式的文本。当然,还有一些看不见的字符,比如换行符。
Markdown有“轻量级文本格式标记”是说,你看到的文本不全表示字面的意思,有“少量”文本表示的是文本格式。比如这样的一行是 ## 二级标题行
。
这样一来,与“所见即所得”相对,你的处理模式就变成了“所思即所得”(WYTIWYG, Waht You Think Is What You Get)。你“想”它是二级标题,在行头加上##
,它就是二级标题。但它最终是什么样子呢?是不确定的。或者说,写作者,至少在写作时,只关心他的抽象类别,并不关心它的视觉效果。
这样,写作与阅读两个环节得以解耦。好处不少,
- 简化头绪。写作者只要关心样式类别,不需要关系样式的视觉效果。
- 抽象统一。方便作者能保持自己的一致性。也方便读者(包括作者自己)、展示平台(如博客平台、阅读器、预览插件)获得统一的视觉效果,并可随时变更。
Markdown最初是程序员写作程序文档和技术博客的格式,它适应的是“一处写作,随处发布”的互联网写作流。
VSCode + Markdown文字处理还有很多好处,说明这个组合的功能和好处正是本文的整体目标,所以此处就不多说了。
这个组合的问题(也可以说成优点),首先自然是你不知道你“所思”的实际“所得”是什么,你至少在写作阶段放弃了对视觉效果的控制。
第二个问题,“简化”和“统一”并非总有保障。你可能注意到了,“轻量”“少量”可能暗藏陷阱。Markdown其实是“一类”而不是“一种”语言,关键在渲染工具支持多少样式、支持哪些样式,以及怎样支持。
VSCode自带Markdown预览插件,不过我常用Markdown Preview Enhanced扩展来预览,功能比较多,如支持脚注、数学公式和mermaid图表,可以导出PDF,对于处理一般书稿已经够用。
如果你觉得这还不够,你还可以安装许多扩展来增强你的Markdown预览功能与效果,还可以自己配置渲染样式。
但不要忘记Markdown的初心——一种轻量级文本格式标记语言。为自己经常用到的公司公文模版、许多同学用到的学校论文模版配置样式也许值得,为偶然喜欢的一篇小说配置样式则似无必要。
就我个人而言,最好的状态是不要打开预览界面,保持Markdown在编辑器内自然可读。样式标记一旦影响阅读,就要想着简化了。
背景可靠,学会了用二十年没问题#
与VSCode类似的软件不少,但综合来说,VSCode最活跃,也最有前途。VSCode是微软的开源代码编辑器,与微软的GitHub托管平台深度融合,目前是用户量最大的代码编辑器,社区庞大而活跃。你学了之后,舒服地使用二十年没问题。
文本编辑器和代码编辑器有什么区别#
你可能会问,文本编辑器和代码编辑器有什么区别?文本编辑器是不是更适合我?
笼统来说,代码编辑器就文本编辑器,而文本编辑器不一定是代码编辑器。又因为编程行业比文字行业大得多、活跃得多,而且代码编辑器的作者和使用者都是程序员,自造自用,因此代码编辑器通常比专用文本编辑器功能强大、扩展灵活、开发活跃。实际上,比起代码编辑器来,专用文本编辑器确实少得多,旧得多。
专用文本编辑器可能会有某些特有的文字处理功能,不过也很容易移植到代码编辑器中。
界面简介#
顶部菜单#
菜单能呈现很多重要功能、操作,但需要一些时间来熟悉。
左侧工具栏#
包括文件浏览、查找与替换、文件版本管理、扩展管理、账号管理、软件设置,等等,一些插件也可能呈现在这里。
命令面板#
- 命令面板
- 文件浏览面板
- 位置跳转
- 符号跳转
- 标题跳转
底部状态/信息栏#
VSCode常用设置#
中文界面#
见快速安装和体验一节。
界面色调主题#
功能与操作#
查找替换#
文件内查找替换。
整个文件夹中的查找、替换。 左侧工具栏中有一个放大镜形状的按钮,点开(Ctrl+Shift+F)后可以对整个文件夹进行查找替换,支持正则表达式、文件名过滤等许多强大功能。
针对文字处理的设置和插件#
光标对齐#
[Cursor Align]
表格格式化#
插入、编辑序列文本#
扩展Insert Sequences
可以在多光标处插入各种文本序列,包括整数、Ascii字符、月份名称、日期,以及任何javascript表达式。有很多选项可选。
选中多个数字加减1、10、0.1,使用内置插件 emmet
的命令increment by ...
或 decrement by ...
Text Power Tools
也有插入、增加序列的功能。
计算#
字数统计#
Markdown预览扩展Markdown Preview Enhanced#
AI校对扩展AI proofreader#
正则表达式简介#
给编辑朋友的正则表达式课程#
隔行/跳行多光标分组操作#
比如每3行一组:
- 正则查找
(.*\n){3}
- Ctrl + Shift + L,或命令Select All Occurrences of Find Match
这样就能每3行一组的分别选中,然后可以进行多光标分组操作。
有些PDF表格复制后是每格一行,可以这样复原成Markdown表格。