首页 > 其他分享 >使用 Marked 2 为 CotEditor 预览 markdown 内容

使用 Marked 2 为 CotEditor 预览 markdown 内容

时间:2024-05-29 16:12:37浏览次数:13  
标签:脚本 markdown 预览 CotEditor Marked content %%%

CotEditor 虽然各种好,但毕竟功能比较轻量,用来编辑 markdown 甚至没有一个预览功能。不过好在它还支持脚本拓展。

我之前曾经用过coteditor_markdown_set Public仓库里的预览脚本。不过这个脚本的预览依赖 Safari 实现,而且颇有一些年久失修,很多 Markdown 特性都不支持。

最近突然想起来,我不是还买过 Marked 这个预览专用 app 嘛!GFW 和 MultiMarkdown 语法它也都支持,正好拿来给 CotEditor 使用。

不过我一般也是只在临时编辑,确定语法没啥问题的场景下才会用 CotEditor 来写 markdown。而官方仓库中的示例大部分都是通过open file.md的方式来预览的。如果只是临时预览,还要专门保存一个临时文件,似乎并不是很优雅。

官方文档提到也可以直接预览剪贴板的内容。想了想也可以用复制到剪贴板的办法来实现。写一个 shell 脚本,使用pbcopypbpaste命令就行了。这个方法的缺点是会污染剪贴板。如果是在电脑上用,我还是想有更加无副作用的处理方式。

研究了一番官方文档,我感觉也许使用这个 url schema 就可以满足需要了:

x-marked://preview?text=Some%20text%20to%20%2A%2Apreview%2A%2A%0A

唯一的问题是需要对文本内容进行 url encode 才能正确发送到 Marked。考虑到这一点,用 python 来写这个脚本会比较简单。脚本内容分为以下几步:

  • 读取所有输入
  • url encode 编码
  • 拼接成 url,并打开

具体内容如下,也可以直接在这里浏览。

#!/usr/bin/env python3
# %%%{CotEditorXInput=AllText}%%%
# %%%{CotEditorXOutput=Discard}%%%

import sys
import urllib.parse
import webbrowser

content = sys.stdin.read()
content = urllib.parse.quote(content)

webbrowser.open('x-marked://preview?text='+content)

然后把脚本文件保存到~/Library/Application Scripts/com.coteditor.CotEditor目录下,CotEditor 的脚本菜单下就会自动出现这个命令。

使用这个方案之前,我还担心过完全通过链接传参,文本内容过大会不会卡顿。不过拿一段 1 万多字的文章试了下,基本是秒开。

CleanShot 2024-05-29 at 15.47.54@2x.

这个方案的主要问题是没办法实时更新编辑器里的内容,每次预览都会生成一个新的预览窗口。如果要实时更新内容的话,还是得使用open file.md的方案。不过这个可以直接使用官方脚本,就不必自己手搓了。

标签:脚本,markdown,预览,CotEditor,Marked,content,%%%
From: https://www.cnblogs.com/gloryalex/p/18220523

相关文章

  • 初见markdown
    Markdown标题:+标题名字标题三级标题四级标题(井号空格最多6级)字体helloworld!(左右两边都是两个星号)helloworld!(左右一个星号是斜体)helloworld!(左右三个星号是斜体加粗)helloworld!(左右两个波浪号)引用箭头符号,用来引用分割线(三个杠)(三个星号)图片感叹号中括号括......
  • 基于HTML5开发的Markdown在线编辑器
    Markdown是一种轻量级标记语言,以其简洁易读的格式而备受程序员和作者们的青睐。随着互联网的发展,越来越多的在线Markdown编辑器应运而生,为用户提供了更加便捷、高效的写作和编辑环境。本文将探讨基于HTML5开发的Markdown在线编辑器的设计原理、功能特点以及技术优势。演示地......
  • 如何实现在markdown中渲染iframe
    如何实现在markdown中渲染iframedemo展示地址:CreateNextApp项目源代码:https://github.com/KazooTTT/markdown-iframe-preview/https://github.com/KazooTTT/markdown-iframe-preview/使用的markdown渲染器是:GitHub-remarkjs/react-markdown:MarkdowncomponentforReac......
  • Markdown语法
    前提:本节主要是相关markdown的基本语法元素,其他不过多阐述标题#的数量代表标题的级别,一个#是一级标题,五个#是五级标题,标题就相当于(<h1>-<h5>),不过使用#写标题时,写完#中间要有个空格。#一级标题##二级标题...######六级标题也可用快捷键来实现标题级数:ctrl+1一级......
  • TestMarkdown1
    VSCode实时预览还需要执行Markdown:OpenPreviewtotheSide命令来实现。在命令窗口输入Markdown:OpenPreviewtotheSide命令一级标题二级标题三级标题四级标题五级标题六级标题====创建脚注格式类似这样[^RUNOOB]。斜体文本斜体文本粗体文本粗体文本......
  • markdown
    标题一级标题二级标题三级标题四级标题五级标题六级标题字体加粗:helloworld斜体:helloworld斜体加粗:helloworld删除线:Helloworld引用成年人的崩溃从算了开始,计算机的崩溃从不算了开始分割线图片超链接点击跳转我的博客首页列表第一步第二步第三步......
  • MarkdownFile新建添加到鼠标右键
    第一种方法:手动配置WIN+R进入运行窗口输入:regedit进入注册表1、找到【计算机\HKEY_CLASSES_ROOT\.md】这个目录。2、然后在此目录下修改“默认”,双击或右键修改,添加值:Typora.md。3、新建字符串值,修改名字ContentType,值为text/markdown。4、再次新建字符串值,修改名字......
  • Markdown语法学习
    Markdown语法学习标题最多支持六级标题,也就是六个#。字体加粗倾斜加粗倾斜删除引用”我于杀戮之中盛放,亦如黎明中的花朵“分割线图片超链接点我跳转到百度列表Frank //有序列表JayChou//无序列表表格名字性别生日张三男1977.......
  • Markdown学习
    MarkDown学习标题:积极标题就用几个#+空格+标题名三级标题四级标题字体*和-Hello,World!Hello,World!Hello,World!Hello,World!引用“>内容”分割线“---”“***”图片超链接[点击跳转到博客](博客园-开发者的网上家园(cnblogs.com))列表空格......
  • 基于HTML5开发的Markdown在线编辑器
    Markdown是一种轻量级标记语言,以其简洁易读的格式而备受程序员和作者们的青睐。随着互联网的发展,越来越多的在线Markdown编辑器应运而生,为用户提供了更加便捷、高效的写作和编辑环境。本文将探讨基于HTML5开发的Markdown在线编辑器的设计原理、功能特点以及技术优势。演示地址ht......