Wie deaktiviere ich die Tastenkombination Wahltaste-Leerzeichen für nicht unterbrechende Leerzeichen?

59

Wie deaktiviere ich die nervige Tastenkombination "Option-Leerzeichen" für nicht unterbrechende Leerzeichen?

Dies ist sehr, sehr ärgerlich in Eclipse oder im Terminal, da ich häufig den nicht unterbrechenden Raum anstelle eines regulären eintippe.

Malax
quelle
3
FWIW, Bei einem Mac wird dies als Optionstaste und nicht als Alt-Taste bezeichnet.
Chealion
Kann das Terminal nbsp als umgekehrtes Zeichen oder als eine Art von Zeichen anzeigen, sodass Sie es sofort sehen, wenn Sie einen Fehler machen? Da einige Male tatsächlich Sie tun wollen eine nbsp eingeben.
Forthrin

Antworten:

60

Lass deine ~/Library/KeyBindings/DefaultKeyBinding.dictDatei so aussehen (falls sie noch nicht existiert, erstelle sie, falls sie bereits Bindungen enthält, füge einfach die von unten hinzu):

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

Was macht das? Jedes Mal, wenn Sie Option-Leertaste drücken, anstatt ein nicht unterbrechendes Leerzeichen einzufügen, fügt OS X jetzt ein reguläres Leerzeichen ein. Problem gelöst.

Sie müssen das Gerät neu starten, um diese Änderung zu übernehmen.

Martin S.
quelle
Ich konnte diese Arbeit auf OSX 10.7 nicht bekommen :(
Eemeli Kantola
4
@EemeliKantola Es funktioniert immer noch für mich, aber Sie müssen Anwendungen erneut öffnen, um die Änderungen zu übernehmen. Terminal, Xcode und viele plattformübergreifende Anwendungen unterstützen DefaultKeyBinding.dict nicht.
Lri
1
@LauriRanta Terminal scheint die DefaultKeyBinding.dictDatei zu unterstützen .
Ragnar123
Dies funktioniert unter Yosemite 10.10.2. Ich habe das Verzeichnis und die Datei von Grund auf neu erstellt. Vielen Dank!
Petr Cibulka
1
Arbeitete auch für mich auf El Capitan, OS X 10.11. Vielen Dank!
n2o
14

Wie in den Kommentaren erwähnt, funktioniert die von Martin bereitgestellte Lösung in einigen Anwendungen nicht, am wichtigsten (für mich) in meinem Editor, Sublime Text 2.

Für alle, die keine Leerzeichen in Ihrem Code benötigen, können Sie die folgende benutzerdefinierte Tastenkombination in Ihre Benutzer-Tastaturbelegung ( "Sublime Text 2 > Preferences > Key Bindings - User") einfügen :

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

Dadurch wird ein reguläres Leerzeichen anstelle eines nicht unterbrechenden eingefügt.

Fresskoma
quelle
11

Ich benutze iTerm2 für den größten Teil meiner Arbeit und das Mapping kann im Einstellungsbereich "Schlüssel" hinzugefügt werden, indem eine neue Tastenkombination unter Einstellungen -> Schlüssel -> die Plus-Schaltfläche hinzugefügt wird. Beachten Sie, dass Sie beim Hinzufügen des Schlüssels ein einzelnes Leerzeichen in das untere Feld einfügen müssen (siehe Abbildung).

Screencap zum Hinzufügen der Tastenkombination

Simon Walker
quelle
Sehr gute Lösung! Heck, ich erhalte immer noch wertvolle Informationen aus einem vier Jahre alten Beitrag. :-)
Malax
Du hast meinen Tag gerettet!
Enrique Marcos
6

Sie können auch ein benutzerdefiniertes Tastaturlayout mit Ukelele erstellen (siehe https://superuser.com/a/515151 ) oder KeyRemap4MacBook verwenden :

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
quelle
3

Da dies die Antwort ist, die Google Ihnen zeigt, wenn Sie nach "Deaktivieren von nicht unterbrechenden Leerzeichen in Sublime Text" suchen ( siehe x3ros Antwort ), dachte ich, ich würde die Antwort für Sublime Text unter Linux veröffentlichen. Fügen Sie dies zu Ihren Tastenkombinationen hinzu:

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

Gehen Sie zu "Einstellungen" → "Tastenkombinationen - Benutzer", um Ihre Tastenkombinationen zu bearbeiten.

Beachten Sie, dass das Leerzeichen in "keys": [" "]ein nicht unterbrechendes Leerzeichen ist.

Beachten Sie außerdem, dass diese Schlüsselbindung auch Widgets wie das Suchfeld betrifft. Mit anderen Worten, Sie können keine nicht unterbrechenden Leerzeichen mehr in Ihr Suchfeld eingeben, was ein Problem sein könnte. Verwenden Sie stattdessen die folgende Schlüsselbindung, um nicht unterbrechende Leerzeichen nur im Texteditor zu deaktivieren:

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

Eine mögliche globale Lösung ist gesetzt alt- spaceauf etwas anderes wie anzeigen Notification Center in Systemeinstellungen> Tastatur> Shortcuts> Mission Control.

Bildbeschreibung hier eingeben

Ari P
quelle
3

Verwenden Sie OSX Sierra (10.12.6) und lösen Sie dieses Problem ganz einfach mit Karabiner-Elements:

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

Gehen Sie nach dem Öffnen zu "Komplexe Änderungen"> "Regel hinzufügen"> "Weitere Regeln aus dem Internet importieren" und laden Sie die Regel "Alt + Leertaste (nicht unterbrechendes Leerzeichen) deaktivieren" herunter. Füge es hinzu und du bist fertig!

Terje Andersen
quelle
3

Ich konnte auch nicht den KeyBindings-Fix zum Laufen bringen. Ähnlich wie bei der Sublime-Antwort habe ich meinen Editor (VS-Code) so konfiguriert, dass durch Hinzufügen ein normales Leerzeichen eingefügt wird

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

zu meinem globalen keybindings.json( Preferences: Open Keyboard Shortcuts Filein der Befehlspalette).

user2361830
quelle
1

Bei mir hat der KeyBindings Fix nicht funktioniert. Ich benutze Coda2 als Editor. Ich habe es jedoch geschafft, den Ersatz für BetterTouchTool zu finden.

BetterTouchTool: "Tastatur> Neue Tastenkombination hinzufügen", dann "Alt + Leertaste" in "Tastenkombination" und "Leertaste" in "Andere Tastenkombination auslösen" eingeben

Sean Grünböck
quelle
Danke !, Bettertouchtool hat eine Lösung für alle Probleme: p
Steven.B