0%

使用 Typora 编写 Markdown 以及快捷添加图片的方法

前言

Markdown 如今已经是非常常用的语言了,而且每一篇博客又都需要用 Markdown 来编写,所以有一个得力的编辑器还是很重要的。在此之前一直使用 VS Code + Markdown 扩展来写博客,在绝大部分情况下还是够用的,一些简单的自动补全以及高亮,插件还可以提前预览,唯一的问题在于扔图片是真的麻烦,虽然语法本身不算麻烦,要的就是个链接以及备注而已,但是由于要放到互联网上,从哪里储存图片等等都是一些要思考的问题,所以导致在博客中使用图片变得十分繁琐。

本文先介绍 Typora 编辑器,在之后介绍 Markdown 使用图片 以及博客下使用图片的一些问题,最后介绍使用 Typora 快速使用图片的一些方法。

Typora 编辑器

Typora 应当是相对比较小众的编辑器,在此之前我还从没有考虑为写博客专门使用一种编辑器,因为 Markdown 语法简单,并不像很多编程语言一样需要自动补全等来提高生产力。

这里是 Typora 的官网链接

不过看了一下整个软件的设计简约好看,而且目前 Beta 期间全平台免费,还是体验了一下。如果收费比较夸张或者没有教育优惠的话后期可能会再换

这款编辑器整体来说肯定是比 VS Code 在写 Markdown 时要得心应手多了,默认显示出来的就是预览的状态,所以在编辑是还是感觉非常好的,不用自己猜效果了。还有一点就是 Typora 可以导出 PDF 与 Word 等格式(HTML就不说了),效果非常好看。

另外软件自带帮助以及文档,在应用上方工具栏最右侧,所以这里就不再写更多的详细使用帮助了,如果之后遇到一些比较常用或比较有趣的用法会再附上。

Markdown 中使用图片

markdown 中默认使用图片的语法是

1
![alt 属性文本](图片地址)

alt 属性文本 就是你们学 HTML 时的那个 alt, 用于在图片遇到加载困难时或者朗读者模式中。当图片无法加载,会在对应的位置中显示出你留下的 alt 属性文本,此外在对于患有视觉障碍的用户,当他们使用朗读等功能时,图片会以 alt 属性文本内的文本朗读。

图片地址就有一点说头了,简单来说图片地址就包含两种。

  • Web URL
  • Local Path

直白点就是图片是在网络上,或者是本地。

图片在网络上的情形,图片地址就会是一个 URL(关于URL是什么可以自行百度),举个栗子

1
![一座美丽的山的风景照片](https://ssyerv1.oss-cn-hangzhou.aliyuncs.com/picture/afa09c005abd4c249a99f9a85d1bb1b2.jpg)

https://ssyerv1.oss-cn-hangzhou.aliyuncs.com/picture/afa09c005abd4c249a99f9a85d1bb1b2.jpg

对于上面的例子,https://ssyerv1.oss-cn-hangzhou.aliyuncs.com/picture/afa09c005abd4c249a99f9a85d1bb1b2.jpg 就是一个典型的 URL , 由于介绍清楚 URL 可能还要涉及一些 Web 与网络相关的知识, 这里就不再多说。

第二种情况,也就是图片存储在本地的情况,就要填写路径了。路径分为相对路径与绝对路径。相对路径就是图片相对于 Markdown 文件的路径,开头通常为 ./ 或者 ../ ,类似 ../image/MarkdownWithTypora/image-20200127141505954.png ;绝对路径就是文件在文件系统中的路径了,开头通常是/C:\之类,类似 /MyBlog/image/MarkdownWithTypora/image-20200127141505954.png

举个栗子

1
![A House in LuoJia Mount, Pic by Haulyn5](/image/MarkdownWithTypora/image-20200127141505954.png)

A House in LuoJia Mount, Pic by Haulyn5

博客中使用图片

就像前面说的,图片的链接可以分为两种,那么对应的,在博客中使用图片就有两种方法。

  • 使用网络上的图片
  • 使用服务器本地的图片

要使用网络上的图片,首先要让图片存在于网络之中。如果你本身只是应用已有的图片,那么过程就会很简单,以 Firefox 浏览器为例,在你要使用的图片上点击右键,查看图片,就可以看到浏览器地址栏中的链接,将这个链接扔到 Markdown 文件中,就可以直接使用了。

使用网络上的图片的一大好处是,如果你的博客部署在流量计费的网络中,图片会自动从图片所存储的服务商处加载,也就是所有人在访问你的博客时,图片的流量不会计费,此外由于文字占用空间小,图片往往是流量大头,使用网络上的图片能为你节省一笔费用。例如我使用的 ZEIT 服务的免费版,一个月有20GB流量,对于小网站无所谓,但是当流量足够大的时候,图片巨大的流量就需要引起网站持有者的注意了。

那么要将你本地的图片扔到网络上,就要使用所谓的“图床”服务了(第一次看到这个词半天没理解是什么意思)。大致原理就是你可以将图片扔到他那里,它会将图片存储在他的服务器,然后给你一个 该图片 的URL,然后你就可以将 URL 扔到 Markdown 中使用了。要注意的是,图床服务也有免费和付费,具体使用什么方式,还需仔细斟酌。举一个免费图床的例子:https://sm.ms/ 。其他的可自行百度。

接下来说怎么使用服务器本地的图片。首先本着便于整理和查找的原则,建议你在博客网站的根目录新建一个目录专门存储图片,当然只是建议,实际并没有任何限制。比如你的Markdown文件在/Blogs/myBlog/source/_post, 那么你可以新建目录/Blogs/myBlog/source/images/ ,然后把图片都扔到里面,具体引用时,使用相对地址../images/xxx.jpg 即可。当然如果你没有使用任何框架,自己购置配置服务器来搭建博客,你也可以使用绝对路径。而我由于使用的 Zeit 的服务,并没有一个真实的服务器,所以无法获得文件系统中图片的绝对路径,只能使用相对路径了。 见文末勘误

Typora 快速插入图片

介绍完了如何在博客中使用图片,你也看到了使用图片还是很麻烦的,首先你要将图片扔到合适的地方,再输入合适的地址。如果每个图片都要这样,工作量还是很大的。

这里介绍 Typora 快速插入图片的方法, 由于快速插入也无非是将前面提到的两种使用图片的方法自动化,所以快速插入也是分两种,一种是在你将图片扔进编辑器的时候,编辑器自动将图片上传到图床,然后获得URL,自动生成图片的 Markdown 表示。另一种是在你将图片扔进编辑器的时候,便捷器自动将图片扔到一个合适的目录,然后获得绝对路径或者相对路径,自动生成图片的Markdown表示。

前者需要配置图床,并且使用相关的工具,而 Typora 只有 Mac 版支持配置,Windows 版无相关功能,此处就不再介绍,各位可以搜索其他的 Markdown 编辑工具的使用方法。至于如何使用后者,我参考了 Typora 的官方帮助文档。如果你正在使用 Typora , 点击帮助 , 再点击 Use Images in Typora ,即可看到官方详尽的帮助文档。而且覆盖了相当全面的情况。你也可以参照这篇内容一样的网页

这里做简要说明。首先点击工具栏的文件 - 偏好设置。左侧很明显的看到图像,点击它。

image-20200127145227656

如果你也在使用 Hexo , 那么按照我如图的配置即可,你在每一篇博文中粘贴或拖拽的图片,会自动被放到 你的网站根目录/source/images/你当前编辑的文件的名字/目录下。当然你也可以根据自己需求进行修改,软件的设计说明的还是比较清楚的。

配置结束,复制个图片扔到你的文件中试试吧!对了,如果你是从网络上复制的,Typora 会自动为你生成 URL 版的图片链接。

勘误

今天(2020 02 05)更新博客后发现之前上传的图片全部无法加载,尽管在 Typora 中显示正常,但是在 hexo s 后本地也无法访问。简单思考了一下原因,Hexo 本质是将Markdown等源文件解码并生成一个网站的结构,文件之间的相互位置很有可能在 Build 后发生改变。

具体的分析过程比较冗长,没有兴趣可以直接空降最后解决办法。

分析过程

例如,当下我的博客根目录包含如图的几个目录。

image-20200205153515942

我们需要注意的有3个。

  1. public 目录,为 Hexo g 命令后输出的最终网站,最终实际网站的根目录为public目录而不是你当前的博客目录。
  2. source 目录,为用户主要修改的目录,包括了 Markdown 文本等,稍后会详细介绍。
  3. themes 目录,包括了已经下载的主题,实际构建出来的网站效果与目录中的文件息息相关。(博主之前做过一个添加 Google Analytics 脚本的教程就是修改这里的文件)

source 目录的内部使用 tree 命令展示如下。

C:.
├─about
├─categories
├─image
│  ├─build-site-with-hexo
│  ├─hello-world
│  └─MarkdownWithTypora
├─tags
└─_posts

我们博文的 md 文件都放在 _post 目录,所以如果在 markdown 文件中引用图片,其路径应当类似 ../image/xxx文章/xxx图片.jpg

那么实际构建出来又是什么样呢?

C:.
├─2020
│  ├─01
│  │  ├─16
│  │  │  ├─build-site-with-hexo
│  │  │  └─hello-world
│  │  ├─17
│  │  │  ├─tags
│  │  │  └─在Hexo中使用数学公式
│  │  ├─19
│  │  │  ├─2020年1月问题汇总
│  │  │  └─一些代码托管平台
│  │  ├─21
│  │  │  └─配置WindowsXP虚拟机
│  │  ├─23
│  │  │  ├─cmd-tutorial-1
│  │  │  └─SomeNotes200123
│  │  └─27
│  │      └─MarkdownWithTypora
│  └─02
│      ├─01
│      │  └─CoIMABI-9-Plain-Speech
│      └─02
│          └─paper-SSM-plus-19
├─about
├─archives
│  ├─2020
│  │  ├─01
│  │  ├─02
│  │  └─page
│  │      └─2
│  └─page
│      └─2
├─categories
│  ├─Q-A
│  …… 这里还有一些不重要的东西
├─css
│  ├─fonts
│  └─images
├─fancybox
│  └─helpers
├─image
│  ├─build-site-with-hexo
│  ├─hello-world
│  └─MarkdownWithTypora
├─images
├─js
│  └─schemes
├─lib
│  …… 这里还有一些不重要的东西
├─page
│  └─2
└─tags
    ├─Build-site
    …… 这里还有一些不重要的东西

我对输出做了一些删减,一些没用的部分就不copy过来了,可以看到所有的博文被按照发布日期分别放到了不同的日期目录,而image目录本来与_post 目录同在一个目录,现在却被放到了网站的根目录(即public目录),这就导致之前的相对路径在现在build后不在有效。如果这里要用相对路径该怎么办呢?就会类似这样 ../../../../image/xxx文章/xxx图片.jpg (需要向上翻四层目录,有兴趣的同学可以对照上面的目录结构推一下)。

所以结论是 Markdown 源文件与图片文件的相对路径 和 输出 HTML 文件与图片文件的相对路径 不统一 导致了图片无法访问。由于无法对 Build 的过程进行修改(需要了解 Hexo 源码),所以需要在 Markdown 正确和 输出文件正确 中二选一。

当然是不可能了,我们肯定要想到办法让两边都OK,一番搜索后发现,Typora有一个“设置图片根目录”的操作,那么既然生成网站后,图片资源image目录被放在了根目录,我们只要将markdown 文件的图片根目录设置为你的blog根目录/source就好啦,因为如果将source目录设置为根目录,image目录也可以直接在 Typora 中预览,生成HTML 文件后,使用绝对路径,因为 image 目录也在 public 根目录下,所以也可以正确解析地址。

说的可能有些乱了哈哈,最后总结一下,假设你的博客目录是/MyBlog/。对于生成的HTML文件,他们的根目录就是 /MyBlog/public , 而对于 Markdown 源文件,你可以在 Typora 中设置根目录为 /MyBlog/source ,这样引用图片的绝对路径就都变成了 /image/xxx博文/xxx图片.jpg 这个格式了。

解决办法

在你正在编辑的博文中按照如图过程设置图片根目录为 /你的博客的根目录/source(就是里面有_post目录的目录)。

image-20200205155718329

设置后点击菜单栏的文件 , 再点击偏好设置 。按照下图的内容配置。

image-20200205160220680

注意不要勾选优先使用相对路径。

至此,你可以继续优雅的粘贴图片了,粘贴的图片会被自动保存到 你的博客根目录/source/image/你正在写的博文/xxx.jpg 。然后在博客根目录打开命令行, 输入 hexo s, 打开浏览器 localhost:4000 ,查看一下图片是否被正确的输出了。