Typora切换字体颜色

欢迎大家到我的博客浏览。Typora切换字体颜色 | YinKai's Blog

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

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

原因有两点:

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

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


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

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

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

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

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

加标签

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

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

加别的颜色,我们只需要修改 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}
    SendInput {ctrl down}v{ctrl up} ; 粘贴
    If(clipboard = ""){
        SendInput {TEXT} ; Typora 在这不会自动补充
    }else{
        SendInput {TEXT}

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

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

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

Typora切换字体颜色_第1张图片

这就代表我们的脚本已经在运行了,我们就可以用 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, "", match)) {
        currentColor := match1
        ; 去掉颜色标签
        clipboardText := RegExReplace(clipboardText, "", "")"]'")
        clipboardText := RegExReplace(clipboardText, "", "")
        
        ; 添加新的颜色标签
        if (currentColor != color) {
            clipboardText := "" . clipboardText . ""
        }
    } else {
        ; 添加颜色标签
        clipboardText := "" . clipboardText . ""
    }
​
    ; 粘贴处理后的文本
    SendInput {TEXT}%clipboardText%
}

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

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

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

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

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

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

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

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

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

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

小结

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

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

你可能感兴趣的:(工具,编辑器,Typora,切换字体颜色,AHK脚本,自定义快捷键)