Answers:
对所有文件类型执行此操作的唯一方法是在automator中创建服务,这实际上应该使您更轻松。
删除默认脚本并替换为以下内容:
if [ -f "$1" ] ; then
open -a "TextEdit" "$1" ;
fi
将该文件保存为上下文菜单中要显示的文件,例如“使用TextEdit打开”,完成后,您现在可以选择使用文本编辑打开任何文件。
它不会在“打开方式”菜单中显示,它将是上下文菜单中与您正在运行的任何其他服务组合在一起的单独项。
附带说明一下,如果您是在Mac上进行开发,则应该真正考虑使用更好的文本编辑器,例如TextMate或TextWrangler或Sublime Text,其中一些甚至可以为您添加服务,从而省去了上述所有工作。
您可以通过编辑Info.plist来添加受支持的文件类型,但是我不知道对所有文件类型都可以这样做。将诸如public.data或public.item之类的UTI添加到Info.plist或com.apple.LaunchServices.plist似乎无效。
我已经使用duti将TextMate设置为不同纯文本类型的默认应用程序:
# plain text files without an extension
com.macromates.TextMate.preview public.plain-text all
# executable scripts
com.macromates.TextMate.preview public.unix-executable all
com.macromates.TextMate.preview .as all
com.macromates.TextMate.preview .ass all
com.macromates.TextMate.preview .bash all
com.macromates.TextMate.preview .bom all
com.macromates.TextMate.preview .c all
com.macromates.TextMate.preview .cfm all
com.macromates.TextMate.preview .cfml all
com.macromates.TextMate.preview .class all
com.macromates.TextMate.preview .coffee all
com.macromates.TextMate.preview .conf all
com.macromates.TextMate.preview .cpp all
com.macromates.TextMate.preview .css all
com.macromates.TextMate.preview .csv all
com.macromates.TextMate.preview .ctp all
com.macromates.TextMate.preview .dat all
com.macromates.TextMate.preview .data all
com.macromates.TextMate.preview .doc all
com.macromates.TextMate.preview .erb all
com.macromates.TextMate.preview .fields all
com.macromates.TextMate.preview .gemspec all
com.macromates.TextMate.preview .h all
com.macromates.TextMate.preview .haml all
com.macromates.TextMate.preview .hotkey all
com.macromates.TextMate.preview .hpp all
com.macromates.TextMate.preview .idx all
com.macromates.TextMate.preview .java all
com.macromates.TextMate.preview .js all
com.macromates.TextMate.preview .json all
com.macromates.TextMate.preview .keylayout all
com.macromates.TextMate.preview .kmlibrary all
com.macromates.TextMate.preview .less all
com.macromates.TextMate.preview .log all
com.macromates.TextMate.preview .m all
com.macromates.TextMate.preview .manifest all
com.macromates.TextMate.preview .md all
com.macromates.TextMate.preview .mm all
com.macromates.TextMate.preview .msass all
com.macromates.TextMate.preview .opml all
com.macromates.TextMate.preview .pg all
com.macromates.TextMate.preview .php all
com.macromates.TextMate.preview .pl all
com.macromates.TextMate.preview .plist all
com.macromates.TextMate.preview .plist all
com.macromates.TextMate.preview .py all
com.macromates.TextMate.preview .rb all
com.macromates.TextMate.preview .rd all
com.macromates.TextMate.preview .rdoc all
com.macromates.TextMate.preview .readme all
com.macromates.TextMate.preview .rhtml all
com.macromates.TextMate.preview .rst all
com.macromates.TextMate.preview .sb all
com.macromates.TextMate.preview .scss all
com.macromates.TextMate.preview .sh all
com.macromates.TextMate.preview .srt all
com.macromates.TextMate.preview .strings all
com.macromates.TextMate.preview .sub all
com.macromates.TextMate.preview .tex all
com.macromates.TextMate.preview .tsv all
com.macromates.TextMate.preview .utf all
com.macromates.TextMate.preview .xml all
com.macromates.TextMate.preview .yaml all
duti不支持仅添加应用程序以使用菜单打开而不将其设置为默认菜单。
这是@JamiePatt 接受的答案的改编版本,使用了user48595的改进,此外,它将使TextEdit成为默认应用程序,以便在实际打开文件之前将其打开。这意味着将来可以以常规方式打开文件。
通过运行验证十六进制代码xattr -p com.apple.LaunchServices.OpenWith <file>
,其中“文件”是您已手动设置为使用TextEdit打开的某些文件。
打开Automator并为您的文档选择类型“服务”。
在下拉菜单“服务已选中”下,选择“文件或文件夹”。
添加步骤“实用程序->设置变量值”。您应该看到一个名为“ Storage”的变量。
添加步骤“实用程序->运行Shell脚本”。在下拉菜单“通过输入”下,选择“作为参数”。将文本字段的内容替换为下面的内容,确保十六进制代码与第一步中获得的内容相同。
if [ -f "$1" ] ; then
xattr -wx com.apple.LaunchServices.OpenWith "62 70 6C 69 73 74 30 30 D3 01 02 03 04 05 06 57 76 65 72 73 69 6F 6E 54 70 61 74 68 5F 10 10 62 75 6E 64 6C 65 69 64 65 6E 74 69 66 69 65 72 10 00 5F 10 1A 2F 41 70 70 6C 69 63 61 74 69 6F 6E 73 2F 54 65 78 74 45 64 69 74 2E 61 70 70 5F 10 12 63 6F 6D 2E 61 70 70 6C 65 2E 54 65 78 74 45 64 69 74 08 0F 17 1C 2F 31 4E 00 00 00 00 00 00 01 01 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63" "$1";
xattr -d com.apple.quarantine "$1" || true;
fi
添加步骤“实用程序->获取变量值”。您应该看到一个名为“ Storage”的变量。
添加步骤“文件和文件夹->打开查找程序项”。在“打开方式”下拉菜单下,选择“ TextEdit”。
使用一个令人难忘的名称保存,例如TextEditify。
第一次要打开非TextEdit文档时,必须从右键单击菜单中选择TextEditify。随后的打开可能会以正常方式发生。
脚本说明:
xattr
如果您手动选择“总是打开方式” ,第一个命令将添加通常保存的属性。
第二个xattr
命令确保该方法适用于从Internet下载的文件。
您可以按照Impactjamie的描述创建“服务”菜单工作流。但是,您可以仅使用“打开查找程序项”选项并将TextEdit添加为应用程序。
有一个很好的一篇关于它在这里,这说明了如何进行更详细的创建工作流程。
打开Automator应用程序
请点击 New Document
选择 Service
更改Services receives selected
为“文件或文件夹”
搜索Action
“打开查找程序项”并将其拖到工作流空间中
更改Open with:
为“ TextEdit”或您想要的任何应用程序(我更喜欢“ Visual Studio Code”)
将您的服务保存在逻辑上,例如如果选择了TextEdit,则使用“使用TextEdit打开”。
现在,您可以右键单击任何Finder项目,然后选择Services
-> Open with TextEdit
!
感谢user48595和他的答案中张贴的链接:http : //www.mactricksandtips.com/2013/05/add-open-with-textedit-or-any-other-app-to-right-click-menu-item .html