141

I've seen questions like this which don't quite solve my problem.

I'd like to make Sublime Text 3 the default file viewer/editor for all files that currently use textedit.

Most of these files can be command+i'd, but the ones that have no extension cannot. They give all sorts of permissions errors such as the ones in this image not enough information is available

Is there any way to just never use textedit, and instead set sublime as the default editor for all files?

1
  • Pretty ridiculous that there is still no other way to do this than to hack around.
    – toraritte
    Commented Feb 8, 2023 at 21:12

11 Answers 11

67

To set Sublime Text as the default handler for public.plain-text:

Mavericks (10.9) and earlier

defaults write com.apple.LaunchServices \
    LSHandlers -array-add \
    '{LSHandlerContentType=public.plain-text;LSHandlerRoleAll=com.sublimetext.3;}'

Yosemite (10.10) and later

Use com.apple.LaunchServices/com.apple.launchservices.secure.

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

Remember to restart to pick up the changes.

2
  • This seemed to work quite fine. Unfortunately it was only working for a few days, then the handler magically disappeared from the plist again :/
    – ndreisg
    Commented Jul 15, 2021 at 9:58
  • 1
    This works nicely, but for many hidden files, it doesn't work. For these, you'll also need to run the same command but with LSHandlerContentType=public.data. Commented Dec 1, 2023 at 17:13
115

Another option is to use duti (https://github.com/moretension/duti).

Run brew install duti, save a filetype like this as:

duti -s com.sublimetext.4 public.plain-text all

The changes should be applied immediately, so you don't have to restart like when editing com.apple.LaunchServices.plist.

To also change the default application for executable scripts with no filename extension, add a line like this:

duti -s com.sublimetext.4 public.unix-executable all

Some files are also considered 'public.data', not 'public.plain-text', so you can do this as well:

duti -s com.sublimetext.4 public.data all
8
  • 10
    For convenience -- If you want to use MacVim instead, replace com.sublimetext.3 with com.vim.macvim. If you want to use VS Code instead, replace it with com.microsoft.VSCode.
    – floer32
    Commented Jan 10, 2021 at 1:24
  • 2
    I found this really well-written article. You can run this to set this for almost all extensions brew install duti python-yq curl "https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml" \ | yq -r "to_entries | (map(.value.extensions) | flatten) - [null] | unique | .[]" \ | xargs -L 1 -I "{}" duti -s com.microsoft.VSCode {} all alexpeattie.com/blog/…
    – sickerin
    Commented Oct 10, 2021 at 14:17
  • 2
    check your version, the current build 4167 was version 4: com.sublimetext.4
    – Joel Teply
    Commented Jun 14, 2022 at 23:57
  • @sickerin - that article is amazing. Saved me a lot of rote clicking for sure.
    – sming
    Commented Aug 11, 2022 at 11:04
  • I have a conf file for which TextEdit shows up as the default editor. The above with public.plain-text didn't change the editor. Is there a way to change that? Maybe a way to see the default / fall-back editor option?
    – HanSooloo
    Commented Jun 13, 2023 at 23:11
45

I tried grg's solution in the past and I believe it worked. However, on Yosemite and El Capitan, I ran into problems.

DonnaLea's comment in that solution clued me in on creating a solution. I added the folder path before com.apple.launchservices additionally the file had a slightly different name com.apple.launchservices.secure.

You can see the file/folders being modified in the following path:

/user/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist

Screenshot for reference: enter image description here

Here's the command I used in terminal:

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

Lastly, after a restart to my machine it worked as advertised.

1
  • This works nicely, but for many hidden files, it doesn't work. For these, you'll also need to run the same command but with LSHandlerContentType=public.data. Commented Dec 1, 2023 at 17:13
41
  1. Right click on a .txt file in Finder.
  2. Choose "Get Info".
  3. Expand "Open with:" and choose your preferred text editor in the drop-down.
  4. Push the "Change All..." button below the drop-down and then confirm in the dialog that pops up with "Continue".

This works on Yosemite (OS X 10.10).

4
  • 22
    This does not answer the question. The question is how to do this for all files, even those without a file extension.
    – wrossmck
    Commented Mar 6, 2015 at 11:50
  • 6
    Even if the answer is slightly off topic, it still helped me out from a Google search. +1
    – Teddy
    Commented Mar 6, 2015 at 14:03
  • 1
    wrossmck You are basically right -- my answer even repeats the referred to Q&A in the first line of this question. But I didn't notice this until after I pieced together my answer myself from other answers on this page and posted this answer. Maybe the problem is that searches for the simple answer (i.e. .txt files) lead to this page and not the others (as @Teddy and I found). Commented Mar 9, 2015 at 18:55
  • 2
    @wrossmck This works for me in High Sierra. Once I did this on a .txt file, typing something like open -t script.sql still opened it in my preferred text editor that I set using these directions, even though the extension isn't .txt
    – Mark White
    Commented Jul 4, 2019 at 13:40
31

The solutions proposed here work perfectly for Sublime, but I wanted to do this for Visual Studio Code. The only difference is that you have to find the "application bundle identifier" for whatever text editor you use. I ran this command:

/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/Visual\ Studio\ Code.app/Contents/Info.plist 

link for reference

to get the identifier "com.microsoft.VSCode". Then I installed "duti" and ran this command:

duti -s com.microsoft.VSCode public.plain-text all

This should work for any text editor you want that is installed under /Applications. I hope this helps non-Sublime users.

1
5

I centralize all my default apps management with Magic Launch. You can configure it to open all txt with Sublime Text as default without command line (beside, you can change it easily from System Preferences).

Magic Launch Preferences

One more exceptional useful Magic Launch’s feature is you can set rules based on filename, folders location, which I use intensively to choose different apps for development and writing.

1
  • This shareware tool doesn't seem to exist any longer. Link redirects to a biz conglomerate. :-/ Commented Apr 25 at 19:41
3

RCDefaultApp still works on macOS Sierra. You can easily select what program is default for plain text (BBEedit in my case).

Screenshot of RCDefaultApp

2
  • Does this work for files which have no extension?
    – wrossmck
    Commented Nov 2, 2017 at 11:00
  • Absolutely. On the tab I am showing you basically see a graphical frontend to the command line answers. If you were interested in setting only based on extensions (why I know you are not), you would have to go to the tab "Erweiterungen" = Extensions. Commented Nov 2, 2017 at 13:19
1

I am using Catalina 10.15.6. Taking the following two steps worked for me.

Save SublimeText files with ".txt" extension by default

  1. Open SublimeText.
  2. Go to SublimeText > Preferences > Settings.
  3. Add the following line into the "Preferences.sublime-settings--User" file: "default_extension": "txt",
  4. Save and close the updated settings file.

Configure your Mac to open all ".txt" files with SublimeText by default

[Follow these steps, as posted by David Resnick in a prior answer]

  1. Right click on a .txt file in Finder.
  2. Choose "Get Info".
  3. Expand "Open with:" and choose your preferred text editor in the drop-down.
  4. Push the "Change All..." button below the drop-down and then confirm in the dialog that pops up with "Continue".
2
  • Not all files can be.txt the extension nedds to be St for other non edit reasons
    – mmmmmm
    Commented Sep 16, 2020 at 18:05
  • @mmmmmm - It sounds like you are objecting to the suggestion of setting the default extension to ".txt". Setting it to the default still provides the option to modify the extension at the time of saving a given file. Commented Sep 16, 2020 at 18:33
-2

Rightclick on the file --> Other --> Choose your favorite text editor (I choose Sublime text in my Applications folder) --> Check the 'Always Open with' checkbox --> Open.

This setting will be automatically applied to all other files in the machine.

No need of any restart or no need of any 3rd party software.

3
  • 2
    That doesn't work when there's no file extension.
    – grg
    Commented May 13, 2015 at 15:48
  • @grgarside - I don't think this works at all, regardless of the file extension. I don't really blame Hari since this is one of theose basic features that should "just work". Apple has an open bug on it (I filled it years ago, and Apple apparently refuses to fix it).
    – user83961
    Commented Oct 10, 2015 at 13:22
  • @jww It seems to work great for me for files with extensions—it's how I usually go about changing file associations.
    – grg
    Commented Oct 10, 2015 at 14:13
-2

This solution is ripped from a YouTube video, but it works perfectly for my situation (I'm just using Sublime to edit files in languages like Python, Java, and Ruby).

For any particular file, right-click, select "More Info", and click on the "Open with" tab. You can select what text-editor you want here, and use "Change-all" to use the editor for all files of this type. Obviously, this doesn't work for files with no extension, but it's been an easy quick-fix for me.

1
  • This isn't as useful because you'll need to do this on an extension-by-extension basis. The question was looking for a once-and-for-all solution
    – wrossmck
    Commented Jan 11, 2016 at 19:35
-3

First do get info on the file that you want to set sublime text as the default. Then go to the open as section and choose sublime. After that press change all then continue on the popup menu and you're doneInstructions part 1

Part 2

1
  • This doesn't work when the file type doesn't have an extension
    – wrossmck
    Commented Feb 12, 2016 at 8:24

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .