利用Mac自动化神器AppleScript新建纯文本文件TXT(2)——改进与替代方法
众所周知,Mac自带的Finder不支持像Win一样的右键菜单新建文件的功能,由于我日常工作中时常需要新建纯文本文件,每次操作都是先深深地叹一口气,然后右击文件夹 -> Services -> New Terminal at Folder -> vi xxx.txt(或者touch xxx.txt),可是这样一点都不Mac啊!!!
Mac App Store(MAS)上有一些新建文件的第三方APP,比如New File Creation,Easy New File等等,售价也就十几块,这些APP确实是比较好用,但是我并不需要这么丰富的功能,而且对于在Mac上复制Win的解决方案,我一向是不主张的。
思来想去,搬出了Mac上的两大神器——AppleScript,Keyboard Maestro (Keyboard Maestro是收费应用,官方售价36刀),下面简单讲一下实现方法。
第一步
首先,用AppleScript编写新建文件的脚本,代码如下,不想看代码的同学直接复制进入下一步。
tell application "Finder"
-- 设置新建文件的尝试次数,初始值为1
set new_num to 1
-- 获取Finder顶层窗口的文件夹路径并转换为替身,如果发生错误直接结束脚本
try
set new_txt_path to the folder of the front window as alias
on error
return
end try
try
-- 第一次尝试新建空白文本文件
make new file at new_txt_path with properties {name:"untitled.txt"}
on error eText number eNum
-- 如果发生错误,并且错误代码为-48(即文件已存在),则继续尝试新建文件(再次新建文件的文件名为untilted+尝试次数)
if eNum is equal to -48 then
-- 设置新建文件成功标志,初始值为false
set tag to false
-- 尝试新建文件,直至新建文件成功
repeat until (tag is equal to true)
-- 先假设本次尝试新建文件成功
set tag to true
-- 尝试次数+1
set new_num to new_num + 1
-- 尝试新建文件,并给文件名加上序号(尝试次数)
try
make new file at new_txt_path with properties {name:"untitled" & " " & new_num & ".txt"}
on error
-- 失败则将标志置为false,进入下次循环
set tag to false
end try
end repeat
end if
end try
end tell
第二步
在Keyboard Maestro中新建一个组,我这里命名为“Finder”,设置为只有在Finder激活时才启用。然后在组内新建一个宏,我这里命名为“New Text File”
第三步
设置触发为快捷键(当然也可以选则你自己喜欢的其他方式),我这里将快捷键设置为⇧⌘T,然后添加一个名为“Execute an AppleScript”的动作,将上文的脚本贴进去就大功告成了。
最终效果如下
总结
本文提供一个使用快捷键直接新建空白文本文件的方式,理论上比右键菜单新建更加快速,但功能不如右键菜单丰富。
如果想新建其他类型的文件,则要考虑两种情况。第一种是某些格式的文件不需要初始数据(例如docx,rtf,pptx等等),这些格式文件可以通过直接修改上述脚本中文件的扩展名完成新建动作。第二种是需要初始数据的,则需要在成功新建空白文件后写入初始数据(需要写入二进制数据),例如xlsx,这里不再赘述,如有需求,可以自己探索。