I think it's a Mountain Lion thing, when you type - (dash) twice, it becomes — (emdash). When you type tm, it becomes ™ (trademark symbol). Or when you type three . (dot), it becomes … (elipsis). Some are useful, some are very annoying. Overall, I want to stop that. How can I achieve this?
(on Sierra 10.12, this is now in the Keyboard control panel)
Go to the system preferences and choose "Language & Text"
In the "Text" tab you will find the list of substitutions.
If you want to stop
-- from being turned into
— (emdash) you need to use the + button and add a new rule to replace
-- (replace with itself)
Or, right click in a text field and go to "Substitutions" and disable "Smart Dashes"
I encountered this same problem on Mavericks (10.9), where the fix has changed slightly. Go to System Preferences, then "Language & Region" then click the "Keyboard Preferences..." button and to go to "Text" tab. It is no longer a substitution, however, but instead on the right-hand side of the window there is a tickbox "Use smart quotes and dashes". Unticking this stops it changing two hyphens into an en-dash.
One little gotcha: on 10.9.5 with TextEdit (and probably others) you must exit then restart your editor to have this change take effect.
In 11.11 this is under
System Preferences >
Keyboard. There is a checkbox for
Use smart quotes and dashes.
Keyboard pref in 11.11
In earlier versions of Mac OS X, there were two separate options for smart quotes and smart dashes in the Keyboard System Preferences; however in at least versions 10.9 through 10.11, that option has been replaced by a single "Use smart quotes and dashes" preference.
Fortunately, there are still two separate preferences under the hood, and the UI checkbox toggles both of them simultaneously. You can enable or disable just one of smart quotes or smart dashes from the terminal:
# Disable just smart dashes defaults write -g NSAutomaticDashSubstitutionEnabled 0 # Disable just smart quotes defaults write -g NSAutomaticQuoteSubstitutionEnabled 0 # To re-enable, set either back to 1.
This is currently true as of OS X 10.11; this may change in future versions of OS X (or macOS, as it will now be called).
Not sure if you folks are still having this problem but I just discovered how frustrating it can be. I was writing a unix script for Apple Remote Desktop which requires a
--get flag and it kept getting converted to an em dash, ruining the command.
I couldn't find a way to turn off the em dash conversion, but all hope is not lost. In the Language & Text menu (Text tab) I created an entry that replaces
-- (i.e. it replaces two dashes with itself). This overrides the system converting
-- to an em dash.
It's worth mentioning that even with "use smart quotes and dashes" enabled, you can still "undo" the auto-conversion of -- to — (emdash) by pressing CMD+Z. If turning smart dashes off completely sounds too extreme, this is one way to bring back the -- (double dash).
Also, here's my horror story about “curly quotes:” I had been using Github for years and wondered why my "contributions" never appeared correctly on my profile. I eventually discovered I had configured my git user name in terminal with curly quotes instead of straight marks:
git config --global user.name “Steve” //instead of... git config --global user.name "Steve"
Even though I was copy/pasting the command directly from GitHub's instructions, TextEdit was “fixing” my quotes before I put them in Terminal. Unbelievable! This drove me insane, but I'm recovering...
In you're using Apple "Office" tools: Page, Number, etc, the settings in System Preferences or the command line defaults command as mentioned in previous answers won't affect the smart substitutions. Instead, you'll have to go to top tool bar Edit > Substitutions menu to check or uncheck 'Smart Quotes', 'Smart Dashes' etc.
If you're using TextEdit then 7stud's answer is the way, which is included here for completeness: TextEdit > Preferences and check/uncheck the settings in the bottom sections.
This behaviour is controlled by a system default. To turn it off, type at the terminal:
defaults write -app 'Keynote' TSWPAutomaticDashSubstitution 0
defaults write 'Apple Global Domain' TSWPAutomaticDashSubstitution 0
The first turns off dash substitution for a particular app (here, Keynote); the second for all apps that don't have their own, overriding, default set explicitly. Replace
1 to turn dash substitution back on.
As other replies here have stated, the global default can also be changed using System Preferences (Keyboard>Text>Checkbox "Use smart quotes and dashes"), but this turns on and off quote substitution as well as dash substitution. Moreover, some apps, but not all, allow you to change their defaults by control-clicking in a text field and selecting Substitutions or Show Substitutions. For example, Mail lets you do this, but Keynote does not.
If you want to turn on quote substitution, say, for Keynote use
defaults write -app 'Keynote' NSAutomaticQuoteSubstitutionEnabled 1
or, to turn it on for everything that does not have an overriding default, use
defaults write 'Apple Global Domain' NSAutomaticQuoteSubstitutionEnabled 1
To turn it off, use
0 instead of
If you just want to prevent this from happening on occasion, or per some specific instance, you can simply wait for Mac to make the unwanted change and then press
CMD+z to undo.
Yosemite 10.2 and TextEdit:
In bottom right corner, uncheck
If your TextEdit file is open, close it and reopen it.