如何更改所有类型的基于文本的文件的默认文本编辑器,无论扩展名是什么?

时间:2017-03-25 00:50:36

标签: macos macos-sierra

我知道Finder有内置选项来更改默认应用程序,但这仅适用于该扩展。我想为所有类型的文本文件提供我的编辑器(MacVim)。例如.html,.xml,... .gitignore等,甚至是未知的扩展 like.this

我试过duti但看起来不再有效了。

我也尝试过:

$ defaults write com.apple.LaunchServices LSHandlers -array-add '{LSHandlerContentType=public.plain-text;LSHandlerRoleAll=org.vim.MacVim;}'
$ defaults read com.apple.LaunchServices
{
    LSHandlers =     (
                {
            LSHandlerContentType = "public.plain-text";
            LSHandlerRoleAll = "org.vim.MacVim";
        }
    );
}

以及public.textpublic.utf8-plain-text等不同的UTI。没有运气。

任何帮助表示赞赏。我不想再看到TextEdit ......

1 个答案:

答案 0 :(得分:4)

好的,this answer在Ask Different上提到你的方法已经过时了。它还指向another answer,它应该适用于较新的macOS版本(那些在Mavericks之后的版本)。

defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add \ '{LSHandlerContentType=public.plain-text;LSHandlerRoleAll=org.vim.MacVim;}'

请注意代码中的com.apple.LaunchServices LSHandlers -array-add与提供的解决方案中的com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add之间的区别。

修改

我忘了提到需要重新启动(链接的答案确实提到了这一点)。

另外,请注意(请参阅此答案的评论)OP显然需要使用defaults read com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers > defualts.txt导出所有默认值,通过文本编辑器将所有应用更改为org.vim.MacVim,然后再通过文本编辑器重新导入defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers "$(cat defualts.txt)"