web-dev-qa-db-ja.com

オートコンプリートのEnterキーを無効/上書きする方法は?

Sublime Text 3では、 enter キーを使用して、オートコンプリートドロップダウンからアイテムを選択し、 tab そのための鍵。

私は組み込みのDefault (OSX).sublime-keymapファイルでこのセクションを見つけました:

_{ "keys": ["enter"], "command": "commit_completion", "context":
    [
        { "key": "auto_complete_visible" },
        { "key": "setting.auto_complete_commit_on_tab", "operand": false }
    ]
},
_

これを設定から削除すると、 enter ドロップダウンでアイテムを選択しません。残念ながら、このファイルを変更することはお勧めしません。また、私のUserファイルでのみ上書きすることをお勧めします。 _.app_の内容を変更せずに実際に編集できるとは思いません。

別のセクションを削除してオーバーライドし、_"keys": ["enter"]_以外のすべても削除しようとしましたが、何も機能しないようです。

組み込みのDefault (OSX).sublime-keymapUser/Default (OSX).sublime-keymapファイルのみを変更せずにこれを達成するにはどうすればよいですか?

40
gak

私はSublime Text 3を使用したことがありませんですが、Sublime Text 2以降、以下は変更されていないと思います。

実現したいのは、実際にはSublime Textの標準機能です。オンにするだけです。

あなたが引用したあなたのコードからのこの行…

{ "key": "setting.auto_complete_commit_on_tab", "operand": false }

…「「auto_complete_commit_on_tab」という設定がfalseに設定されている場合にのみコマンドを実行する」を意味します。したがって、その設定をオンにするだけです。

Default/Preferences.sublime-settingsで:

// By default, auto complete will commit the current completion on enter.
// This setting can be used to make it complete on tab instead.
// Completing on tab is generally a superior option, as it removes
// ambiguity between committing the completion and inserting a newline.
"auto_complete_commit_on_tab": false,

"auto_complete_commit_on_tab": true User/Preferences.sublime-settingsにあります。上記の両方のファイルには、[設定]メニューからアクセスできます。

61
lydell

存在しないコマンドに割り当てることができます。以下をUser/Default (OSX).sublime-keymapに追加してみてください

{ "keys": ["enter"], "command": "noop", "context":
    [
        { "key": "auto_complete_visible" },
        { "key": "setting.auto_complete_commit_on_tab", "operand": false }
    ]
}

コマンドnoopのあるプラグインをインストール/作成する場合は、このコマンドを変更する必要があります。

編集

Lydellのソリューションの方が優れています:)その設定を忘れました(ただし、コンテキスト内にあるため、知っておくべきでした...)。私の答えはより一般的な「キーバインドを無効にする方法」だと思います。

11
skuroda