Typora切换字体颜色

news2024/9/22 15:28:57
欢迎大家到我的博客浏览。Typora切换字体颜色 | YinKai's Blog

最近很无聊,突然想起来朋友的 Typora 可以修改字体颜色,而我的却不能,我就去研究了一下,于是有了这一篇教学文章。

可能会有人说,网上大佬早有教学了,为啥还要看你的呢?

原因有两点:

  1. 大佬是一段时间前发的了,可能会存在一些版本问题,而是较新的文章会在前人的基础上,并把一些坑给大家踩了,并告诉大家;

  2. 我和在大佬们的基础上完善了其他功能。🤩


下面,正式开始今天的内容。

不知道大家有没有好奇过,为什么我们可以直接在 Typora 中写的文章或者字体的样式,就跟最后展示在浏览器中的几乎一样?

因为 Typora 是所见即所得的 (WYSIWYG) 编辑器,也就是允许用户直接在编辑器中直接看到最终输出的样式,而不需要在源代码和预览之间切换。

Typora 支持 Markdown,并且在编辑时会即时渲染 Markdown 格式,同时也支持直接插入和展示 HTML 标签。当你在 Typora 中写入 HTML 标签时,Typora会将其解析并在编辑区域中渲染相应的效果,因此你可以直观地看到最终的样式。

基于上面的原理,我们就可以很直接想到一种为字体增加颜色的方法:直接加标签

加标签

什么意思呢?就比如我们想给下面这句话变成红色:

那么我们可以直接使用 html 的标签,修改它的颜色 <font color="red">下面,正式开始今天的内容</font>,效果如下:

加别的颜色,我们只需要修改 color 后的参数即可。

这是最简单,也是比较笨且复杂的一种方法。那么懒惰的我们怎么可能采用这种方法呢?于是,便有了快捷键的方法。

快捷键

有人可能会说,Typora 不支持快捷键加颜色啊,怎么使用快捷键啊?

Typora 不支持,但我们可以自己写脚本来增加快捷键啊~

原理很简单,就是基于我们的 ” 笨方法 “。我们可以通过写一个 AHK 脚本,来为我们选中的内容,做一些修改,比如:先将我们需要更改颜色的内容复制下来,然后加上颜色标签,再将内容粘贴到标签后。这样就可以一键实现增加颜色啦~

具体的实现步骤如下:

我们这里使用 AutoKotKey 这一款脚本语言和自动化工具,它允许用户编写脚本来定义自己的快捷键、自动化复杂任务,以及实现各种自定义的键盘和鼠标行为。

工具安装

我们这里就使用旧版本,点击这里下载,下载完成后就无脑安装即可。

编写脚本

先把脚本给大家:

; Typora
; 快捷增加字体颜色
; SendInput {Text} 解决中文输入法问题

#IfWinActive ahk_exe Typora.exe
{    
    ; alt+0 红色
    !0::addFontColor("black")
  
    ; alt+1 红色
    !1::addFontColor("red")

    ; alt+1 橙色
    !2::addFontColor("orange") 

     ; alt+3 黄色
    !3::addFontColor("yellow")

     ; alt+4 绿色
    !4::addFontColor("green")

    ; alt+5 浅蓝色
    !5::addFontColor("cornflowerblue")

     ; alt+6 青色
    !6::addFontColor("cyan") 

   ; alt+7 紫色
    !7::addFontColor("purple")
}

; 快捷增加字体颜色
addFontColor(color){
    clipboard := "" ; 清空剪切板
    Send {ctrl down}c{ctrl up} ; 复制
    SendInput {TEXT}<font color='%color%'>
    SendInput {ctrl down}v{ctrl up} ; 粘贴
    If(clipboard = ""){
        SendInput {TEXT}</font> ; Typora 在这不会自动补充
    }else{
        SendInput {TEXT}</ ; Typora中自动补全标签
    }
}

原理很简单,就是定义快捷键,然后通过不同的快捷键,绑定不同的参数传给 addFontColor 函数,以此来实现不同的快捷键,增加不同的颜色的效果。大家可以根据自己的喜好,修改对应的快捷键与其对应的颜色。

我们在 AHK 完毕后,在桌面或者任何地方,创建一个 .txt 文件,把上面的脚本复制进去,然后修改文件后缀名为 .ahk,修改完成后是这样的:

然后我们双击一下该脚本,电脑右下角就会多一个这样的图标:

这就代表我们的脚本已经在运行了,我们就可以用 Typora 随便打开一个 .md 文件,然后去试一试效果啦~


路人乙说,“你这跟网上的教程也没差啊,哪里来的增加功能?

哎嘿嘿,你别急,我话还没说完呢。

究极版快捷键

大家其实真正在使用就会发现,单纯这样使用快捷键也不是很方便,有时候一不小心加错颜色的话,还得把标签一个一个删除才能修改颜色或者删除颜色。

我也经历了之后,才想着有没有更好的办法。于是我便尝试在原有脚本的基础上,进行修改,便有了下面的 “ 究极版 ” 快捷键切换字体颜色脚本:

#IfWinActive ahk_exe Typora.exe
{  
    ; alt+0 红色
    !0::toggleFontColor("black")
  
    ; alt+1 红色
    !1::toggleFontColor("red")
​
    ; alt+1 橙色
    !2::toggleFontColor("orange") 
​
     ; alt+3 黄色
    !3::toggleFontColor("yellow")
​
     ; alt+4 绿色
    !4::toggleFontColor("green")
​
    ; alt+5 浅蓝色
    !5::toggleFontColor("cornflowerblue")
​
     ; alt+6 青色
    !6::toggleFontColor("cyan") 
​
   ; alt+7 紫色
    !7::toggleFontColor("purple")
}
​
toggleFontColor(color){
    clipboard := "" ; 清空剪切板
    Send {ctrl down}c{ctrl up} ; 复制
    ClipWait ; 等待剪切板内容变为非空
    clipboardText := clipboard
​
    ; 提取颜色标签
    if (RegExMatch(clipboardText, "<font color='([^']*)'>", match)) {
        currentColor := match1
        ; 去掉颜色标签
        clipboardText := <font color='red'>RegExReplace(clipboardText, "<font color='[^']*'>", "")</font>"]'")
        clipboardText := RegExReplace(clipboardText, "</font>", "")
        
        ; 添加新的颜色标签
        if (currentColor != color) {
            clipboardText := "<font color='" . color . "'>" . clipboardText . "</font>"
        }
    } else {
        ; 添加颜色标签
        clipboardText := "<font color='" . color . "'>" . clipboardText . "</font>"
    }
​
    ; 粘贴处理后的文本
    SendInput {TEXT}%clipboardText%
}

在原有脚本的基础上,我增加了两个功能:

  • 如果所选内容已包含颜色标签,并且与当前使用的快捷键的颜色标签一直,则删除颜色标签

    • 思路是通过正则表达式将匹配到的标签替换为空字符串,从而达到删除标签颜色的效果

  • 如果所选内容已包含颜色标签,并且与当前使用的快捷键的颜色不一致,则删除原有颜色标签,增加新颜色标签

在使用附加的两个功能的时候,需要按照如下方法使用:

  1. 先将鼠标光标放在所需要修改的内容的最后一个字的位置,这样光标就会定位到颜色结束标签后

  2. 然后按住 Shift 键,将鼠标光标点击到 开始标签的前面,这样就自动选择中到我们需要更改的内容 + 标签了

  3. 最后再根据所需要做的操作:去掉颜色、更改颜色,来使用不同的快捷键即可。

或者直接多选择几个字,只要选择的字里面不包括同样的标签,应该就不会有什么影响。

还有就是使用的时候,必须是连续的一句话,不能有空行,不然就会有 bug,或许会在以后回想起来,再去想想有没有别的解决办法。

小结

今天带大家使用了 AHK 这个工具,自定义实现了一个给字体修改颜色的快捷键的功能,当然会有些不足,但目前我感觉这样够用了,就没有过度去思考一些别的情况。

大家也可以按照自己的想法去进行实现一下,我这里也只是自己的突发奇想,肯定不是最好的想法,如果有更好的想法也欢迎大家评论交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1272993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提升Jmeter测试效率的9种参数化方法!

jmeter工具无论做接口测试还是性能测试&#xff0c;参数化都是一个必须掌握且非常有用的知识点。参数化的使用场景: 1&#xff09;多个请求都是同一个ip地址&#xff0c;若服务器地址更换了&#xff0c;则脚本需要更改每个请求的ip 2&#xff09;注册账号&#xff0c;不允许账…

群晖NAS配置之搭建WordPress个人博客站点

群晖NAS配置之搭建WordPress个人博客站点 之前写了一些ngrok和frp给群晖nas做内网穿透&#xff0c;今天分享一下在群晖nas下安装wordpress的教程。 WordPress是一个开源的内容管理系统&#xff08;CMS&#xff09;&#xff0c;最初是用来搭建博客的&#xff0c;但后来发展成为…

离线直线度测量仪的适用范围!

离线直线度测量仪虽是智能测量设备&#xff0c;但与在线检测设备相比&#xff0c;检测速度还是较慢&#xff0c;但非常适用于需要使用的圆形轧材抽检或全检&#xff0c;生产产线不适合安装在线仪器的的厂家。 离线直线度测量仪主要用于金属棒材、管材、陶瓷管材、压辊、轧辊等产…

浅谈集中控制式预付费抄表系统设计与应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要:介绍一种由射频卡预付费和RS485总线组成的集中控制式预付费抄表系统,系统能准确及时地釆集处理电能计量数据并实现预付费功能。该系统简化用户电能表设计&#xff0c;使智能集中控制器具有多功能化&#xff0c;实现系统…

WP采集插件的进阶功能:输入关键词采集及定向采集实现精准筛选

WP采集插件教程&#xff1a;轻松实现全网文章采集 近年来&#xff0c;WordPress&#xff08;简称WP&#xff09;作为一款强大的网站建设工具&#xff0c;广受用户喜爱。然而&#xff0c;对于许多网站管理员来说&#xff0c;如何轻松而高效地获取全网各类文章内容成为了一个亟待…

PCB布线为什么不能走直角或锐角-笔记

PCB布线为什么不能走直角或锐角-笔记 摘要一.PCB走线在直角转弯的地方&#xff0c;信号前后部分相互影响这几个理由我们来一一分析一下传输线的直角带来的寄生电容从阻抗的角度来看直角的尖角产生放电或者电磁辐射走线直角的工艺问题 摘要 有一定熟悉画过PCB板的人或者PCB教学…

VMware通过ISO镜像安装window2016虚拟机

1.点文件->新建虚拟机 2.进入到下边页面 3.根据你的服务器硬件选择硬件兼容性 4.选择2016版本的windows(注&#xff1a;没有该版本的话选择最高版本) 5.根据你的需求选择引导设备( 启动过程&#xff1a; BIOS&#xff1a; 在计算机启动时&#xff0c;BIOS负责进行自检&#…

MySQL如何处理并发访问和高负载?

在当今互联网时代&#xff0c;面对日益增长的数据量和用户访问量&#xff0c;数据库的并发访问和高负载处理变得尤为重要。MySQL作为最流行的关系型数据库管理系统之一&#xff0c;具备许多关键技术和策略来处理并发访问和高负载&#xff0c;下面将对其进行深入探讨。 ​ 图片…

开关电源工作时,如何抑制纹波和减小高频噪声?

开关电源的纹波和噪声是一个本质问题&#xff0c;换而言之无论纹波和噪声多么小&#xff0c;也无法从根本上去除&#xff0c;再绝对的讲开关电源无论成本怎么提高&#xff0c;也无法完全达到线性电源的性能和特点。那么&#xff0c;通常抑制或减少它的做法有五种&#xff1a; …

Netty Review - 探索Pipeline的Inbound和Outbound

文章目录 概念Server CodeClient CodeInboundHandler和OutboundHandler的执行顺序在InboundHandler中不触发fire方法InboundHandler和OutboundHandler的执行顺序如果把OutboundHandler放在InboundHandler的后面&#xff0c;OutboundHandler会执行吗 概念 我们知道当boss线程监控…

SSD-FTL算法学习总结1

SSD核心技术&#xff1a;FTL算法。 1、什么是FTL? FTL是Flash Translation Layer&#xff08;闪存转换层&#xff09;&#xff0c;完成主机&#xff08;HOST&#xff09;逻辑地址空间到闪存Flash物理地址空间的翻译,或者说映射&#xff08;Mapping&#xff09;。 FTL算法分成…

发生这种情况 经常导致投资者的痛苦

在这个市场中&#xff0c;什么事会让人痛苦呢&#xff1f;有的投资者马上回答&#xff0c;因为亏损。说实话&#xff0c;如果经过刻意的练习&#xff0c;我们在一定程度上能克服亏损给人带来的痛感。但是有另一种情况也容易为投资者带来痛苦&#xff0c;下面我们就来讨论一下。…

4、RTC 实时时钟Demo(STM32F407)

RTC是个独立的BCD定时器/计数器。RTC 提供一个日历时钟&#xff0c;两个可编程闹钟中断&#xff0c;以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元。 (RTC实质&#xff1a;一个掉电(主电源)后还继续运行(由VBAT供电)的32位的向上计…

为什么年轻人这么热衷元宇宙NFT?

盘点你们不知道的元宇宙玩法套路&#xff1a;潮玩宇宙、趣玩联盟、潮玩世界 引言&#xff1a;项目圈最常见的一句话&#xff0c;是这样说的“你图的是平台的高利息&#xff0c;而平台图的是你的本金”&#xff0c;这是韭菜人追悔莫及讲的最经典的话&#xff0c;但也有杠精同志讲…

【OJ比赛日历】快周末了,不来一场比赛吗? #12.02-12.08 #15场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-12-02&#xff08;周六&#xff09; #4场比赛2023-12-03…

AWS EC2 如何 使用 SSM会话管理器登陆

首先只有特定版本的OS会默认附带SSM Agent。 预安装了 SSM Agent 的 Amazon Machine Images&#xff08;AMIs&#xff09; - AWS Systems Manager 其次EC的instance role必须有一个叫“AmazonSSMManagedInstanceCore”的策略 如何给IAM User赋权&#xff0c;让他们可以使用SSM…

深入理解Zookeeper系列-2.Zookeeper基本使用和分布式锁原理

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理&#x1f525;如果感觉博主的文章还不错的话&#xff…

zookeeper集群和kafka集群

&#xff08;一&#xff09;kafka 1、kafka3.0之前依赖于zookeeper 2、kafka3.0之后不依赖zookeeper&#xff0c;元数据由kafka节点自己管理 &#xff08;二&#xff09;zookeeper 1、zookeeper是一个开源的、分布式的架构&#xff0c;提供协调服务&#xff08;Apache项目&…

CityEngine2023 根据shp数据构建三维模型并导入UE5

目录 0 引言1 基本操作2 实践2.1 导入数据&#xff08;.shp&#xff09;2.2 构建三维模型2.3 将模型导入UE5 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;CityEngine专栏&#x1f4a5; 标题&#xff1a;CityEngine2023 根据shp数据构建三维模型…

零基础学编程系列,看一下具体中文编程代码是什么样子的

零基础学编程系列&#xff0c;看一下具体中文编程代码是什么样子的 上图 编写一个单选的程序 上图 是单选 按钮的中文编程代码 附&#xff1a;中文编程工具构件工具箱总共22组305个构件&#xff0c;构件明细如下&#xff1a; 文本件16个&#xff1a; &#xff08;普通标签&am…