回答:
~/Library/KeyBindings/DefaultKeyBinding.dict
ファイルを次のようにします(ファイルが存在しない場合は作成し、既にバインディングが存在する場合は下から追加します)。
{
"~ " = ("insertText:", " ");
}
これは何をしますか?中断しないスペースを挿入する代わりにOption-Spaceを押すたびに、OS Xは通常のスペースを挿入するようになりました。問題が修正されました。
この変更を適用するには、デバイスを再起動する必要があります。
DefaultKeyBinding.dict
ファイルをサポートしているようです。
コメントで述べたように、Martinが提供するソリューションは一部のアプリケーションでは機能せず、最も重要なのは(私にとっては)私のエディターであるSublime Text 2です。
そのため、コード内のスペースを壊すことに悩まされていないすべての人のために、次のカスタムキーバインドをユーザーキーマップに追加できます("Sublime Text 2 > Preferences > Key Bindings - User"
):
{ "keys": ["alt+space"], "command": "insert_snippet", "args": {"contents": " " } }
これにより、改行なしの代わりに通常のスペースが挿入されます。
私はほとんどの作業にiTerm2を使用しており、[キー]設定ペインにマッピングを追加できます。[設定]-> [キー]-> [プラス]ボタンに新しいキーの組み合わせを追加します。キーを追加するときは、下のボックスに示されているようにスペースを1つ入れてください。
Ukelele(https://superuser.com/a/515151を参照)でカスタムキーボードレイアウトを作成するか、KeyRemap4MacBookを使用することもできます。
<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>
これは、「Sublime Textの改行なしスペースを無効にする方法」を検索するときにGoogleが表示する答えなので(x3roの答えを参照)、LinuxでSublime Textの答えを投稿すると思いました。これをキーバインディングに追加します。
{ "keys": [" "], "command": "insert_snippet", "args": { "contents": " " } }
[設定]→[キーバインディング-ユーザー]に移動して、キーバインディングを編集します。
のスペース"keys": [" "]
は改行なしスペースであることに注意してください。
また、このキーバインドは、検索ボックスなどのウィジェットにも影響することに注意してください。つまり、問題になる可能性のある検索ボックスに改行しないスペースを入力できなくなりました。テキストエディタだけで改行しないスペースを無効にするには、代わりに次のキーバインドを使用します。
{
"keys": [" "],
"command": "insert_snippet", "args": { "contents": " " },
"context": [
{ "key": "setting.is_widget", "operand": false }
]
}
OSX Sierra(10.12.6)を使用し、Karabiner-Elementsを使用してこれを非常に簡単に解決しました。
https://github.com/tekezo/Karabiner-Elements
開いたら、[複雑な変更]> [ルールの追加]> [インターネットからさらにルールをインポート]に移動し、[alt + spacebar(改行なしスペース)を無効にする]ルールをダウンロードします。それを追加すれば完了です!
また、KeyBindingsの修正を機能させることができませんでした。Sublimeの答えと同様に、私はエディタ(VS Code)を追加して通常のスペースを挿入するように設定しました
{ "key": "alt+space", "command": "type",
"when": "editorTextFocus",
"args": { "text": " " } }
私のグローバルにkeybindings.json
(Preferences: Open Keyboard Shortcuts File
コマンドパレットで)。
私にとって、KeyBindingsの修正は機能しませんでした。Coda2をエディターとして使用します。しかし、BetterTouchToolで動作するように置き換えを取得することができました。
BetterTouchTool:「キーボード>新しいショートカットの追加」、「キーボードショートカット」に「alt +スペース」、「トリガー他のキーボードショートカット」に「スペース」と入力