个人博客:https://mmmmmm.me

源码:https://github.com/dataiyangu/dataiyangu.github.io

需求

  • 能够将csdn的文章同步到自己的hexo博客(csdn有图片防盗链)
  • 图片保存到本地文件夹(上传到云空间容易丢失)
  • 最简便的操作

背景

之前用过hexo-admin,代码区和预览不同步,而且因为csdn的防盗链,所以只能从csdn复制,然后粘贴过去;hexoEditor(github)文件的名字必须和文章的名字一样,因为我的gitalk是根据文件名字创建issus的,中文会导致报错;mweb(用的最久)相对方便多了,直接将csdn文章粘贴过去,可是图片有外链,通过从csdn拖动图片到指定位置,方便了一点点。

新宠

告诉我,我的名字叫什么?大声点我听不见~

Typora

页面

我的是mac版:



具体相关下载安装以及操作的说明略。

神奇之处

看得见的优点

用md的语法写完回车,实时预览,而不是像其他一样左右分开的。

如何设置项目根目录

注意上图最上面

typora-root-url: ../../source

这个的意思是设置根目录,不然下面的图片是看不到的。

设置方法:编辑–》图片设置–》设置图片根目录

文章发布的时候这行要去掉,否则格式有问题

如何显示图片?

快捷键command+,打开设置–》编辑器–》复制到指定路径–》填写路径为images–》设置:

对本地位置的图片应用上述规则

对网络位置的图片应用上述规则

优先使用相对路径

这三项打上勾



这里能够将csdn中的图片直接粘贴过去就是图中红圈中能够完美实现这个功能。

然后由于优先使用相对路径,即这里将source作为根路径,所以相对路径就是/images/xxxxx.png

2019-03-12更正:这里一定要设置相对路径

于是最终操作流程

option+command+3 选择打开文件-》打开_posts文件-》新建一个文件

  1. 编辑–》图片设置–》设置图片根目录(source)(因为需要根据根目录自动写出来下载图片到哪个路径)

    出现
---
typora-root-url: ../../source
---

当然直接将这句话添加在头部应该也可以

2019-03-12更正:第一点的上面这部分不需要,因为上面图中设置优先使用相对路径,这句话已经没有用了



然后粘贴hexo文章头部信息(作者、分类、时间等 注意在粘贴的时候一定要切换成源代码模式,快捷键command+/ )因为其中有“-”符号,导致自己的data和catagory会自动table,具体报错信息文章末尾给出

  1. 直接将csdn文章粘贴过去(不用处理图片哦, 一定不要是源代码模式,否则无法自动下载图片
  2. 将根目录那句话删掉(否则hexo无法将md解析为html,格式错误), 当然,删除这句话,在Typora中图片无法显示可是在浏览器中打开是正常的,希望在Typora中阅读,当然可以载把这句话加上即可
---
typora-root-url: ../../source
---

2019-03-12更正:不加这句话也可以,因为上面图中设置优先使用相对路径,这句话已经没有用了,把图片全部设置成相对路径就可以载这个软件中看自己的文章了。



4. 在编辑器的上面修改文件名称和路径(_posts)

5. 完成

如果在粘贴hexo头部的时候不切换成源代码模式会报错如下:

ERROR Process failed: _posts/2019-03-03-1.md
YAMLException: bad indentation of a sequence entry at line 7, column 13:
      categories:
                ^
    at generateError (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:165:10)
    at throwError (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:171:9)
    at readBlockSequence (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:935:7)
    at composeNode (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1363:45)
    at readBlockMapping (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1062:11)
    at composeNode (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1332:12)
    at readDocument (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1492:3)
    at loadDocuments (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1548:5)
    at Object.load (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1569:19)
    at parseYAML (/Users/leesin/Desktop/blog/node_modules/hexo-front-matter/lib/front_matter.js:80:21)
    at parse (/Users/leesin/Desktop/blog/node_modules/hexo-front-matter/lib/front_matter.js:56:12)
    at Promise.all.spread (/Users/leesin/Desktop/blog/node_modules/hexo/lib/plugins/processor/post.js:52:20)
    at tryCatcher (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:509:35)
    at Promise._settlePromise (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:694:18)
    at Promise._fulfill (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:638:18)
    at PromiseArray._resolve (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise_array.js:126:19)
    at PromiseArray._promiseFulfilled (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise_array.js:144:14)
    at PromiseArray._iterate (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise_array.js:114:31)
    at PromiseArray.init [as _init] (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise_array.js:78:10)
ERROR Process failed: _posts/2019-03-03-1.md
YAMLException: bad indentation of a sequence entry at line 7, column 13:
      categories:
                ^
    at generateError (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:165:10)
    at throwError (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:171:9)
    at readBlockSequence (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:935:7)
    at composeNode (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1363:45)
    at readBlockMapping (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1062:11)
    at composeNode (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1332:12)
    at readDocument (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1492:3)
    at loadDocuments (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1548:5)
    at Object.load (/Users/leesin/Desktop/blog/node_modules/js-yaml/lib/js-yaml/loader.js:1569:19)
    at parseYAML (/Users/leesin/Desktop/blog/node_modules/hexo-front-matter/lib/front_matter.js:80:21)
    at parse (/Users/leesin/Desktop/blog/node_modules/hexo-front-matter/lib/front_matter.js:56:12)
    at Promise.all.spread (/Users/leesin/Desktop/blog/node_modules/hexo/lib/plugins/processor/post.js:52:20)
    at tryCatcher (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:509:35)
    at Promise._settlePromise (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:694:18)
    at Promise._fulfill (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise.js:638:18)
    at PromiseArray._resolve (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise_array.js:126:19)
    at PromiseArray._promiseFulfilled (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise_array.js:144:14)
    at PromiseArray._iterate (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise_array.js:114:31)
    at PromiseArray.init [as _init] (/Users/leesin/Desktop/blog/node_modules/bluebird/js/release/promise_array.js:78:10)

Typora--终于找到一个能够解决将csdn文章同步到hexo的完美编辑器(解决csdn图片防盗链导致无法直接复制文章的问题)。的更多相关文章

  1. php解决微信文章图片防盗链

    解决微信文章图片防盗链 function actionWechatImg() { header('Content-type: image/jpg'); $url = $_GET['url']; $re ...

  2. Python爬取mn52网站美女图片以及图片防盗链的解决方法

    防盗链原理 http标准协议中有专门的字段记录referer 一来可以追溯上一个入站地址是什么 二来对于资源文件,可以跟踪到包含显示他的网页地址是什么 因此所有防盗链方法都是基于这个Referer字段 ...

  3. ASCII,Unicode和UTF-8终于找到一个能完全搞清楚的文章了

    前言 平时喜欢写东西,看博客,一直对编码有些懵,今天下午也不知道看到了什么,突然想了解下,就找到了这个文章,看完真的豁然开朗,这个必须留下来做纪念. 点击打开链接 1.ASCII 我们知道,计算机内部 ...

  4. (6)妈的终于找到能用的nehe sdk了

    在网上下载了有十多个,终于找到一个能用的了 下面是下载地址: http://download.csdn.net/detail/jason_bourn/681620#comment 泪奔啊~

  5. Java:终于找到了在alloy中的JFileChooser中的弹出式菜单不显示文字的解决办法

    alloy界面可以说是我写过的最漂亮的一种JAVA界面. 可惜不知为什么,至从几年前推出1.4版后,就再也没有更新了. 随着java版本的升级,一直很担心alloy有一天不再适用于java的最新版. ...

  6. 【转载】“error LNK1169: 找到一个或多个多重定义的符号”的解决方法

    c++的小细节的地方 原文地址:https://blog.csdn.net/xiaosu123/article/details/5665729 问题描述如下: 有 三个源文件,A.h.B.cpp.C. ...

  7. “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)

    解决方案: “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载) 遇到的问题: 在.h头文件中采用namespace 命名空间报错 test.h namespace LMR ...

  8. error LNK1169 找到一个或多个多重定义的符号的解决方法

    问题描述如下: 有 三个源文件,A.h.B.cpp.C.cpp. A.h是头文件,其中声明了三个变量a1.a2. a3. B.cpp是A.h中所声明的类的实现源代码,C.cpp是主程序文件.B.cpp ...

  9. 转载:“error LNK1169: 找到一个或多个多重定义的符号”的解决方法

    转载来自:http://www.cnblogs.com/A-Song/archive/2012/03/23/2413782.html 问题描述如下: 有 三个源文件,A.h.B.cpp.C.cpp. ...

随机推荐

  1. 「AHOI / HNOI2018」转盘 解题报告

    「AHOI / HNOI2018」转盘 可能是我语文水平不太行... 首先可以猜到一些事实,这个策略一定可以被一个式子表示出来,不然带修修改个锤子. 然后我们发现,可以枚举起点,然后直接往前走,如果要 ...

  2. 经典排序背包——cf1203F

    先把收益为正数的处理掉:策略是挨个扫,扫n遍,碰到能买的就买,然后可以得到一个更新后的r 剩下的就看做是一个背包模型:物品(a,b)表示当背包体积>a时才能装下体积为b的该物品,问最多装几个 无 ...

  3. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  4. php 常用加密函数

    md5()md5()默认情况下以 32 字符十六进制数字形式返回散列值,它接受两个参数,第一个为要加密的字符串,第二个为raw_output的布尔值,默认为false,如果设置为true,md5()则 ...

  5. win7 cmd 常用命令

    进入不同的分区  d: 查看之栏目树:tree 查看当前目录下的子目录:dir 切换不同的目录:cd

  6. Ubuntu下qemu环境搭建vexpress开发平台

    在查找资料过程中,发现自己搭建虚拟的arm环境的话,有一个比较好的软件就是qemu了,当然还有其他的,大家各投所好就好. 接下来说一下qemu环境搭建过程. 其实搭建很简单,作为小白,我还是捣鼓了两三 ...

  7. Spellchecker inspection helps locate typos and misspelling in your code, comments and literals, and fix them in one click

    Pycharm设置 Pycharm总是很多的拼写检查波拉线 Spellchecker inspection helps locate typos and misspelling in your cod ...

  8. could not stop cortex-m device

    检查一下STM32复位管脚是不是0V,如果是0V的话并且你有上拉电阻,那么就断电后检查一下STM32的VCC和GND是否短路,我的就是两个贴片电容击穿造成的短路从而使RST无法拉高.

  9. MySQL之explain命令解释

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了.如: explai ...

  10. HDU 6574 Rng

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6574 思路:用古典概型的方法计算俩个区间不想交的概率,再用 1 减去即可. 由于 枚举俩种括号的所有可 ...