How to replace rather than add tags in MacOS

finderfinder-tag

I've been scratching my brain on this one for a while. In macOS, it's easy to add tags to a file (whether right-clicking on a file, using the toolbar shortcut button or using the File menu). In each case, this opens the Tags menu which allows you to choose a tag that you want to add (for example, the default color-based tags). It's equally easy to remove any currently assigned tags.

However, I can't find a way to replace all existing tags with a new one. Let me explain my case scenario:

  1. I add a tag "ToDo" (Blue) to a file.
  2. Once I begin work I have to replace the "ToDo" tag with an "In Progress" tag (Orange).
  3. When I complete the work, I have to replace the "In Progress" tag with "Completed" (Green).

Currently, for steps 2 & 3, I have to open the Tags menu, manually remove any tags assigned to the file/folder, and finally add the new tag.

Is there a way to simplify that process by removing all assigned tags and replacing them with the new tag, all in one go? I assumed that holding down the Option key (or another modifier) may change the "Add Tag" action to a "Replace Tag" action, but no success.

I know I could achieve this with Terminal Scripting or Keyboard Maestro, but I'm trying to see if there's a native way to do this.

Thanks!

Best Answer

A native solution:

  • Define a custom keyboard shortcut for the Finder.app in Settings > Keyboard > Shortcuts > App Shortcuts. Map the menu item “Tags…” to some keyboard shortcut, I used ⌘ CommandS.
  • Now, selecting any file and hitting ⌘ CommandS brings up a little window where you can enter your tags. Screenshot of the little finder window that shows the tags “Red”, “Blue”, and “Green” for an example.txt file
  • ⌘ CommandA selects all existing tags, you can then write your new tags and confirm with enter.

This means you can replace all tags of a file with “Important” by typing ⌘ CommandS, ⌘ CommandA, “Important”, ⏎ Return, ⏎ Return. The window also does completion of tags, so a (case-insensitive) unique prefix of the desired tag name is enough.