(这篇不是Obsidian教程,主要是转换enex为Markdown)
去年偶然在B站刷到Typora收费的消息,虽然偶尔用但这消息还是在B站了解到的。前段时间又刷到了obsidian的视频,可能就是之前点进过几个讲Typora收费的视频。
看了这些介绍obsidian的视频后,我就想把以前印象笔记上的内容给转出来。
先下载了印象客户端,看了下14年底用用的印象笔记,但也就用了不到半年。
首先是导出https://www.zhihu.com/question/327418797/answer/2145154447
选中笔记本,可以选内层,也可以选外层,也可以选所有,点列表那一栏右边的三个小圆点导出笔记。
我是只选了一个笔记本,导出后的enex层级不清楚有没有,反正是转Markdown后是没层级的,都在一起了,所以还是分开导出更好吧。
导出后又准备转Markdown,应该是有不少工具的,但大多都搜的是叫evernote2md,还有什么先导入Joplin再导出Markdown的方案,我闲得蛋疼吗,再装个软件。搜了下确实不少后出的笔记软件支持导入enex,如果又支持导出Markdown的话,那也行吧。
最先看的是obsidian帮助里提到的工具yarle,使用指南>导入数据,从Evernote导入https://forum.obsidian.md/t/import-from-evernote/108
记得有个知乎的文章同时提到这两工具,但也是链接忘了,同时搜这两名字搜到的https://zhuanlan.zhihu.com/p/400835213,我记得里面只有这两工具链接也没其它文字和图片。。。
这两工具用的也是折腾了半天,一个是命令行,一个是有图形界面。都有各种选项吧,yarle更丰富点,而且转换成Markdown也有选项,在STEP 2:中,Target Dialect中就可以选择是转成什么软件要用的Markdown。
export enum OutputFormat { ObsidianMD= 'ObsidianMD', StandardMD= 'StandardMD', LogSeqMD = 'LogSeqMD', }

Target Dialect
刚开始我在链接那纠结了半天,这个Obsisdian用的附件语法,在帮助里,使用指南>嵌入文件那写了而正经Markdown图片嵌入是
其实我对于Markdown用的最多的也就是多级标题和无序列表,都不怎么用图片啥的,要在Markdown里插入视频,应该只有iframe标签,或者video标签,音频的话就是audio标签吧。在思源笔记里插入图片和视频,导出的Markdown里这两者就是video标签和audio标签,在Typora中第一次试了下直接拖进去音频也是用的audio标签。最起码这样的话在Typora里是能正常看的,但是这两种标签在MarkText里却是文本显示。
但我刚开始直接在Target Dialect那选了Obsisdian后,转出Markdown里面的图片,在Typora里也看不了,所有附件类型的链接都成了这种了。
又试了下evernote2md,转出后的Markdown,原先的图片倒是正经的音频的话是直接转为链接,但有个很大的问题,表格都错乱了, 这个不得不放弃了,除非你原先印象笔记中没有表格。
后来试着在Target Dialect选择了StandardMD,这样转出的链接就是传统Markdown链接了,虽然在Obsisdian中没有音频播放条了,但是可以鼠标移到链接那会弹出播放条,或者直接点链接,直接点打开新页面覆盖当前页面,虽然能前进后退但体验也不是很好。音频链接的话在Typora里也能点击打开用本地音频播放器播放。印象笔记里是音频播放条则是出现在该笔记的上方。
又导入思源笔记看了下,对于附件链接的话,它是直接右边打开窗口,音频的话这里面只放个播放条看着确实不是太好,直接鼠标移到链接也没播放条。但是PDF附件链接的话,思源笔记直接打开右边窗口左右看着确实很方便,在Obsisdian里,我还是手动拆分左右窗口啊,但是鼠标移到链接上会有PDF预览(刚开始还以为是点击弹出的专属PDF阅读窗口),如果你不绕一下点链接,就会被那预览给影响的点不了。还有我操作的时候不是最大化,点击最大化这PDF也没自适应啊,还是之前的35%,这点实在是不如思源笔记,我看思源笔记不论最大化还是窗口,人家PDF都不动啊。
还有个表格的问题,以前也不用Markdown中的表格啊,看了下好像也是个坑,反正不是很灵活。
我发现转出的表格上面都有一空行,在Markdown里表格应该是必须要表头,而我在原先印象笔记中好多都是没表头的表格,至于有表头的,在源码模式里把表格第三行覆盖了第一行就行了,第三行空行删掉,就是懒得操作了除非在每篇整理的时候一个一个过一遍。
原先在印象笔记里表格最后一列放的音频,原先到导出的这样的链接,在阅读模式是只有播放条左边的播放按钮,其实和不在表格里一样,取决于表格的宽度,它只是正好表格左边内容多挤的最后音频播放条只显示一小部分。但这其实也没啥用呀,又拖动不了进度条,当然这音频短的话还好说。又在思源笔记里的表格添加音频,直接加到外面了。那最后还是选用这样的链接,主要我要在其它Markdown编辑器中也能勉强的看。
后来发现音频写成图片那种嵌入语法,在Obsisdian也能显示出播放条,PDF也是直接在当前阅读模式下就能看,不用新开窗口。可能是我关了Wiki链接吧,主要后面我还用了个附件链接的插件要关这个选项。但这样这Typora里看的话还是以图片形式,只是图片加载不出来了,这和使用效果一样了,在普通的Markdown编辑器里这就显示一段路径的文本,那这也就没啥用,只有在Obsisdian里才能用图片链接来链接音频。。
最后还有关于附件的问题,附件到底是以什么样的方式去存,Obsidian里的选项我倾向于最后一种,当前文件夹下指定的文件夹中。

文件与链接
yarle转出的附件,默认也是在当前文件夹下指定的子文件夹中,然后是分别按Markdown文件名.resources,建了不同的附件文件夹,每个附件文件夹只放该Markdown中的附件,其实这种我觉得也不错,但是你后面新建的其它笔记按Obsidian的那些选项又不是这样存放的,再往这些笔记里添加图片啥的也不是按那样存放的。(实在不想截图,就用Obsidian帮助里的文字说明改一下)
- path文件夹 - 笔记1 - 笔记2 - _resources -笔记1.resources - 笔记1的附件.jpg - 笔记1的附件.wav -笔记2.resources - 笔记2的附件.png - 笔记2的附件.mp3
在yarle里还有选项可以设置,在Date format:框下面的Store attachments in notebook-level(haveEnexLevelResources)和Store attachments in one folder only(haveGlobalResources)就是控制这附件位置的,两者同时选好像是只能生效notebook-level

附件文件夹位置设置
(resourcesDir)这里设置附件文件夹的名字
选择notebook-level,就和Obsidian第四选项一样,在当前文件夹下的附件文件夹,就是./_resources
- path文件夹 - 笔记A - 笔记B - 笔记C - 笔记D - _resources - 笔记A的附件 - 笔记B的附件 - 笔记C的附件 - 笔记D的附件
选择one folder only,最后附件存放在当前文件夹的上级目录下的附件文件夹,就是../_resources
- _resources - 笔记1的附件 - 笔记2的附件 - 笔记3的附件 - 笔记4的附件 - path文件夹 - 笔记1 - 笔记2 - 笔记3 - 笔记4
但是为什么这个导出enex的或者转换出的Markdown都没层级呀,否则的话直接选notebook-level按笔记本分,就和Obsidian最后选项一致了。
事实证明想多了,这Obsidian自带更新附件位置的。当然如果不用Obsidian,又不想移动太多那就上面说的后者方法。我就想在印象笔记里,直接分别导出笔记本的每个二级目录,选用notebook-level选项分别转换,重新整理,不论怎样都是麻烦的事。
最后还有个方法,就是我用attachment搜第三方插件,搜到了同一作者的两个插件Consistent attachments and links和Unique attachments。前者就是个唯一性的插件,按MD5生成文件名确定是唯一的,我又不想把附件名弄成MD5所以算了吧。后者就是我想要的插件,把已经写成的Wiki链接转为标准的Markdown链接,才知道上面的那是Wiki链接。。
https://github.com/dy-sh/obsidian-consistent-attachments-and-links
按它的说明,设置>文件与链接>始终更新内部链接关了,内部链接类型选为相对路径,使用Wki链接关了,新附件的默认位置:当前文件夹下指定的子文件夹中,好像当前文件所在的文件夹也行,子文件夹名称随便写个吧(图在上面)。
最后插件的设置里也要设置附件子文件夹名称,最好和文件与链接那子文件夹名设成一样吧,虽然关了自动更新,但新加的图那应该也是按文件与链接里设置的存放。这插件只是最后更新路径时用吧。

Consistent attachments and links插件设置
然后直接运行命令Reorganize vault会逐个运行以下命令
Replace all wikilinks with markdown links
Convert all embed paths to relative
Convert all link paths to relative
Collect all attachments
Delete empty folders
当然可以根据自己需求分别运行单独的命令,比如我就想按原先存放附件的位置,那就不运行这个Collect all attachments。
最后的最后我又在印象笔记里把这笔记本里的二级目录分别导出,enex文件名就是二级目录的文件名
然后又用yarle来转换,此时又遇到之前遇到过的问题

yarle中的错误

uTools中OCR
出错后用uTools里带的OCR提取文本复制直接进这目录,发现appData\Local下的yarle都没
搞错了,反斜杠没识别出来,最后知道这问题怎么解决了,也知道这问题是怎么触发的。
Target Dialect由默认的Obsidian换成StandardMD,不知道什么幺蛾子,在最后Step 5>Logs里看到了enexSources里第一条是 "./test/data/test-template.enex",莫名其妙的,确实也有这文件,在.\resources\app\test\data里,所以这就是作者测试的吧。。
解决方法是Step 2里,选完各选项,在Step 4选输出目录,Step 1选enex文件。最好还是关了重开,我试的时候有些没转换出来的。
还有个问题是开启后直接调选项时这工具可能会自动重启一下,要么就先等一下再选选项

yarle重启时的图
这次转换时(新下的4.8.5版本),我才发现这enex能多选,还是先用默认的附件位置转换,结果正是想要的效果。之前印象笔记默认导出的是Evernote.enex,而yarle转换出的文件正是在notes文件夹下的Evernote文件夹里。由于我这次导出时就按笔记本二级目录的文件夹命名,所以多选enex文件,转换出的就是这几个文件夹,也不用自己吭哧吭哧移动了。
对了,由于所有插件设置各种配置什么的都在.obsidian文件夹内,所以试验这些操作的时候就是复制这份到刚刚转换出的notes同级目录内,然后在obsidian里打开其它库选这目录。
搞清楚了,这空格问题是obsidian和yarle转换的问题。经过把附件拖到Obsidian和Typora编辑器中试出来结果
在Obsidian里打开Wiki链接,直接拖进去显示的链接和文件名一样,如果是传统链接,托进去空格变成了%20
但是在Typora里,拖进去传统链接不用UrlEncode就可正常使用,那你Obsidian里关了Wiki链接为什么就非要求传统链接要URLEncode呢?
我看到STEP 2里有Perform URL Encoding on FileNames And Links和Sanitize spaces in resource names
经过测试后者是和Replacement character for sanitizing spaces in resource names一起用的,但前者转成UrlEncode就是个坑。
点选取消再选中可以在Step 5的logs中看到
config: urlEncodeFileNamesAndLinks: false config: urlEncodeFileNamesAndLinks: true
测试了一通,Target Dialect默认Obsidian,其它也都默认,转换出是不仅是空格,前面路径都给UrlEncode了,选了notebook-level或one folder only只有空格变成了%20,但你用Wiki链接又不需要UrlEncode,那转的有什么用。
Target Dialect选StandardMD则是全无效,这传统链接需要UrlEncode这又转出无效,又有什么用,不过选StandardMD其实就不是为了在Obsidian里用,这个情有可原。
所以那就只能用替换了(replacementChar),默认的_或者-都行,但选这个一定要把Sanitize spaces in resource names勾选上,这样出来的文件名和附件链接里的路径都把空格替换了。
我还试过替换成%20,结果很搞,文件名和链接文字里的空格也变成%20,看着实在是不爽,所以最后还是用默认的_吧,实在搞不懂为什么obsidian里用传统链接要空格要用UrlEncode
或许用其它系统,导出这些各种不同搭配的选项又有不一样的结果。
印象笔记里按最里层级的笔记本导出多个enex文件
如果不用Obsidian的话,原印象笔记里没表格,那可以用evernote2md
有表格那还是yarle吧,而且定制的选项多。最后不用Obsidian也可以在Target Dialect里选StandardMD。
要用Obsidian还得考虑这链接要传统链接还是Wiki链接,根据自己需要选ObsidianMD,StandardMD,也可以就选ObsidianMD,最后用插件转换。
附件有空格就使用sanitizeResourceNameSpaces替换,附件名最好还是别有空格了,千万别在urlEncodeFileNamesAndLinks上折腾。
使用yarle时,打开先等会,直接选选项可能会重启。
一定要先在STEP 2里先选好选项,然后我是先在STEP 5选导出位置,然后才在STEP 1里选enex文件,这个STEP 3中的模版,我都不熟悉碰都没碰,建议先了解下Obsidian里的模版,然后在这里自行尝试吧。看过些教程可以把标签放到开头的三小---里,但是这样的话我觉得转换就只能选单一的enex文件了,毕竟有些标签不重叠。