主要通过AutoHotKey实现,该软件可以接管键盘的快捷键,通过自定义函数,实现特定快捷键触发功能。
下载安装完软件之后,首先要在Typora的文件/偏好/Markdown下开启高亮语法,以使“==str==”被识别显示为高亮str:

接下来准备AutoHotKey脚本。新建一个.ahk文件,用记事本打开:

复制粘贴下述代码(在这种脚本语言中分号表示注释):
#IfWinActive ahk_exe Typora.exe
{
; Alt+1 高亮
!1::addHighlight()
; Alt+2 红色
!2::addFontColor("red")
; Alt+3 绿色
!3::addFontColor("green")
}
; 字体颜色设置
addFontColor(color){
clipboard := "" ; 清空剪切板
Send {ctrl down}x{ctrl up} ; 复制
tmp := Substr(clipboard, 1, 5)
If(tmp != "<font"){
SendInput {TEXT}<font color='%color%'>
SendInput {ctrl down}v{ctrl up} ; 粘贴
If(clipboard = ""){
SendInput {TEXT}</font> ; Typora在这不会自动补充
}else{
Needle := "$"
StringGetPos, pos, clipboard, %Needle%, L2 ; 应对行内联公式
if (pos >= 0){
SendInput {TEXT}</font> ; 有内联公式时也不会自动补充
}else{SendInput {TEXT}</ ; Typora中自动补全标签
}
}
}else{
clipboard := StrSplit(clipboard, ">")[2]
clipboard := StrSplit(clipboard, "<")[1]
SendInput {ctrl down}v{ctrl up} ; 粘贴
}
}
; 字体高亮
addHighlight(){
clipboard := "" ; 清空剪切板
Send {ctrl down}x{ctrl up} ; 复制
tmp := Substr(clipboard, 1, 2) ; (sourcestr,start(from 1)[,length])
If(tmp != "=="){
SendInput {TEXT}==
SendInput {ctrl down}v{ctrl up} ; 粘贴
SendInput {TEXT}== ; Typora 在这不会自动补充
}else{
clipboard := Trim(clipboard,"==")
SendInput {ctrl down}v{ctrl up} ; 粘贴
}
}
保存关闭后,双击打开,状态栏出现绿色图标即成功

接下来打开Typora,直接使用快捷键即可。本脚本可实现Alt+1高亮文本、Alt+2红色、Alt+3绿色。选中文本后使用快捷键生效,对已生效的文本,选中后使用快捷键撤销效果,与Typora本身的一些快捷键一致。
附AutoHotKey官方文档地址,本文中的脚本功能通过查阅该文档实现。AutoHotKey官方文档