优势:自动复制为markdown相对路径,添加图片引用标签,标签命名为中文名称的首字母,如果有字母和符号则保留。
目前使用vscode写markdown文档,配置好插件以后,直接在文件浏览器中拖动确实可以获得文件的相对路径。vscode的资源管理器写起来很影响视觉,总开关很烦。而且我的图片需要经常引用,每个图片后面都要加上引用标签{#fig:xxx},文章中引用的时候又需要[@fig:xxx]来引用。每次项标签名字都比较烦。因此,我补充了RunAny的路径复制功能(当然其他的ahk脚本也可以哈)。
紫色标注是我添加的参数,圈起来是添加的代码。
1:由于markdown仅支持相对路径,使用的时候,在ini中配置必须的文件名前缀。
2:使用了拼音库,py.ahk,这个库的介绍https://www.autoahk.com/archives/37300,这个库的使用根据自己的情况放置路径,我的py.ahk库路径如下图。对应的我在huiZz_System.ahk脚本中也添加了include命令。
#Include %A_ScriptDir%\py_v1\lib\py.ahk
;=======================================;
class RunAnyObj {
;=============前面原有的函数省略==========================;
;;===================我改动的函数====================;
system_file_path_zz(path:="",copy:="", md:= False,flag:=""){
textResult:=""
Loop, parse, path, `n, `r, %A_Space%%A_Tab%
{
if(!A_LoopField)
continue
SplitPath, A_LoopField, name, dir, ext, nameNoExt, drive
if(ext="lnk")
FileGetShortcut, %A_LoopField%, lnkTarget, lnkDir, lnkArgs, lnkDesc, lnkIcon, lnkIconNum, lnkRunState
textResult.=(copy="path") ? A_LoopField "`n" : %copy% "`n"
}
Clipboard:=Trim(textResult, ",`n ")
if md
{
SplitPath, Clipboard, , , , name_no_ext, ;从带后缀的文件名中获得文件名
name_no_ext := py.initials(name_no_ext)
Clipboard := flag . Clipboard
strencoded := EncodeDecodeURI(Clipboard,true) ;编码解码文件放在最后面了
Clipboard := "![](" strencoded "){#fig:" name_no_ext "}" ;加上文件名以防孤单,哈哈
}
}
}
;==============;编码解码的函数=我放在huiZz_System.ahk脚本最末尾了========================;
EncodeDecodeURI(str, encode := true, component := true)
{
static Doc, JS
if !Doc {
Doc := ComObjCreate("htmlfile")
Doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
JS := Doc.parentWindow
( Doc.documentMode < 9 && JS.execScript() )
}
temp := JS[ (encode ? "en" : "de") . "codeURI" . (component ? "Component" : "") ](str)
temp := StrReplace(temp,"%3A",":" )
temp := StrReplace(temp,"%5C","\" ) ;复制的地址是反斜杠,转一下
Return temp
}
例如我的md文档和图片相对关系是这样的,就是md文档同样路径下有一个figure文件夹,存放了md文档所需要的图片
,那么我在ini中的配置就是:
这里先去看RunAny复制路径功能。