How to disable the Option-Space key combination for non-breaking spaces?

61

25

How to disable the annoying Option-Space key combination for non-breaking spaces?

This is very very annoying in Eclipse or the terminal as I often type the non-breaking space instead of a regular one.

Malax

Posted 2009-12-03T12:47:59.247

Reputation: 835

Is it possible to make the Terminal display nbsp as a reverse character or some sort, so you would instantly see it when you mistype? Because some times you actually do want to type a nbsp. – forthrin – 2018-03-24T09:12:43.817

3FWIW, It's referred to as the option key rather than the alt key on a Mac. – Chealion – 2009-12-04T07:04:04.323

Answers

62

Make your ~/Library/KeyBindings/DefaultKeyBinding.dict file look like this (if it doesn’t exist create it, if there are already bindings in it just add the one from below):

{
"~ " = ("insertText:", " ");
}

What does this do? Every time you press Option-Space instead of inserting a non breaking space OS X now inserts a regular space. Problem fixed.

You need restart the device to apply this change.

Martin S.

Posted 2009-12-03T12:47:59.247

Reputation: 636

This works on Yosemite 10.10.2. I've created the directory and the file from scratch. Thanks a bunch! – Petr Cibulka – 2015-04-06T02:11:15.050

Worked for me on Yosemite. Like @PetrCibulka I had to create the directory and file, but it works (at least for Terminal, anyway). – Andrea – 2015-05-16T19:16:19.320

1Also worked for me on El Capitan, OS X 10.11. Thanks! – n2o – 2015-10-13T14:08:49.330

Was causing a difficult bug to find in my bash scripts where I put non breaking space around [[: bash [[ command not found – Gilles Quenot – 2016-08-26T11:53:17.107

Works on Mojave, I had to create the folder before mkdir ~/Library/KeyBindings – marcostvz – 2018-11-20T15:57:52.360

I couldn't get this work on OSX 10.7 :( – Eemeli Kantola – 2012-09-17T08:43:34.700

4@EemeliKantola It still works for me, but you have to reopen applications to apply the changes. Terminal, Xcode, and many cross-platform applications don't support DefaultKeyBinding.dict. – Lri – 2012-09-25T12:23:39.563

1@LauriRanta Terminal seems to support the DefaultKeyBinding.dict file. – Ragnar123 – 2014-01-24T15:36:06.680

15

As mentioned in the comments, the solution provided by Martin does not work in some applications, most importantly (for me) in my editor, Sublime Text 2.

So for all of you who are troubled by none breaking spaces in your code, you can add the following custom keybinding into your user keymap ("Sublime Text 2 > Preferences > Key Bindings - User"):

{ "keys": ["alt+space"], "command": "insert_snippet", "args": {"contents": " " } }

This will insert a regular space instead of a non-breaking one.

fresskoma

Posted 2009-12-03T12:47:59.247

Reputation: 801

11

I use iTerm2 for most of my work and the mapping can be added in the "Keys" preference pane, by adding a new key combination in Preferences -> Keys -> the plus button. Note when adding the key make sure to put a single space in the lower box as shown.

screencap of adding the keyboard shortcut

Simon Walker

Posted 2009-12-03T12:47:59.247

Reputation: 417

Very good solution! Heck, I'm still getting valuable information from a four year old post. :-) – Malax – 2013-11-26T14:12:56.793

You make my day! – Enrique Marcos – 2014-03-17T13:23:49.760

6

You could also create a custom keyboard layout with Ukelele (see https://superuser.com/a/515151) or use KeyRemap4MacBook:

https://github.com/tekezo/KeyRemap4MacBook/blob/master/src/core/server/Resources/include/checkbox/standards/space.xml

<item>
  <name>Non-Breaking Space to Normal Space</name>
  <appendix>(Option+Space to Space)</appendix>
  <appendix>(Option+Shift+Space to Space)</appendix>
  <identifier>remap.option_space_to_space</identifier>
  <autogen>__KeyToKey__ KeyCode::SPACE, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_OPTION | ModifierFlag::NONE, KeyCode::SPACE</autogen>
  <autogen>
    __KeyToKey__
    KeyCode::SPACE, MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_OPTION | MODIFIERFLAG_EITHER_LEFT_OR_RIGHT_SHIFT | ModifierFlag::NONE,
    KeyCode::SPACE,
  </autogen>
</item>

Lri

Posted 2009-12-03T12:47:59.247

Reputation: 34 501

4

Using OSX Sierra (10.12.6), and resolved this very easy by using Karabiner-Elements:

https://github.com/tekezo/Karabiner-Elements

Once opened, go to "Complex Modifications" > "Add Rule" > "Import more rules from the Internet", and download the "Disable alt+spacebar (nonbreaking space)" rule. Add it, and you're done!

Terje Andersen

Posted 2009-12-03T12:47:59.247

Reputation: 41

3

A possible global solution is to set alt-space to something else like Show Notification Center in System Preferences > Keyboard > Shortcuts > Mission Control.

enter image description here

Ari P

Posted 2009-12-03T12:47:59.247

Reputation: 31

3

I also could not get the KeyBindings fix to work. Similar to the Sublime answer, I ended up configuring my editor (VS Code) to insert a normal space by adding

{ "key": "alt+space", "command": "type", 
                      "when": "editorTextFocus",
                      "args": { "text": " " } }

to my global keybindings.json (Preferences: Open Keyboard Shortcuts File in the command palette).

user2361830

Posted 2009-12-03T12:47:59.247

Reputation: 143

3

Since this is the answer that Google shows you when searching for "How to disable non-breaking spaces in Sublime Text" (see x3ro's answer) I thought I'd post the answer for Sublime Text on Linux. Add this to your key bindings:

{ "keys": [" "], "command": "insert_snippet", "args": { "contents": " " } }

Go to "Preferences" → "Key bindings - User" to edit your key bindings.

Note that the space in "keys": [" "] is a non-breaking space.

Also note that this key binding also affects widgets, like the search box. In other words, you can no longer type non-breaking spaces into your search box, which could be a problem. To disable non-breaking spaces just in the text editor, use this key binding instead:

{
    "keys": [" "],
    "command": "insert_snippet", "args": { "contents": " " },
    "context": [
        { "key": "setting.is_widget", "operand": false }
    ]
}

Hubro

Posted 2009-12-03T12:47:59.247

Reputation: 4 846

1

For me the the KeyBindings fix didn't work. I use Coda2 as an editor. I managed to get the replacement to work with BetterTouchTool though.

BetterTouchTool: "Keyboard > Add New Shortcut" then type "alt + space" in "Keyboard Shortcut" and "Space" in "Trigger other Keyboard Shortcut"

Sean Grünböck

Posted 2009-12-03T12:47:59.247

Reputation: 11

Thanks!, bettertouchtool has a solution to all problems :p – Steven.B – 2018-04-16T10:23:39.487