Note: To open settings.json, run Preferences: Open User Settings (JSON) in the command palette. To open defaultSettings.json, use Preferences: Open Default Settings (JSON), to open keybindings.json, use Preferences: Open Keyboard Shortcuts (JSON), and to open defaultKeybindings.json, use Preferences: Open Default Keyboard Shortcuts (JSON). You need to save after editing these files. Note that many settings support being overridden for specific language modes.
To prevent suggestions from appearing while typing
In settings.json:
"editor.suggestOnTriggerCharacters": false,
"terminal.integrated.suggest.suggestOnTriggerCharacters": false,
"editor.quickSuggestions": {
"other": "off",
"comments": "off",
"strings": "off"
},
"terminal.integrated.suggest.quickSuggestions": false,
"[dockerfile][json][json]": {
// check defaultSettings.json or Settings UI to see which languages override editor.quickSuggestions and add them to the above list.
"editor.quickSuggestions": {
"other": "off",
"comments": "off",
"strings": "off"
},
},
To unbind default keybindings that trigger suggestions:
("trigger" means to make the suggestion widget / inline suggestions appear)
These might change in the future. You can search for these command IDs in defaultKeybindings.json to see what they are bound to. Put the following in keybindings.json:
{
"key": "ctrl+i",
"command": "-editor.action.triggerSuggest",
},
{
"key": "cmd+i",
"command": "-editor.action.triggerSuggest",
},
{
"key": "ctrl+space",
"command": "-editor.action.triggerSuggest",
},
{
"key": "cmd+space",
"command": "-editor.action.triggerSuggest",
},
// editor.action.inlineSuggest.trigger currently not bound to anything by default
See also:
"editor.inlineSuggest.enabled": false,
"editor.suggest.preview": false,
// "editor.inlineSuggest.suppressSuggestions": false
"editor.snippetSuggestions": "none",
"editor.wordBasedSuggestions": "off",
"editor.suggest.show*": true, // replace "*" with the thing you don't want to show. You can trigger suggestions here to see the list of options.
"debug.console.historySuggestions": false,
"terminal.integrated.shellIntegration.suggestEnabled": false, // pre v1.90
"terminal.integrated.suggest.enabled": false, // v1.90+
"workbench.commandPalette.experimental.suggestCommands": false,
To unbind default keybindings that accept suggestions:
("accept" means to confirm usage of the selected suggestion option from the suggestion widget / inline suggestion widget)
In settings.json:
"editor.acceptSuggestionOnEnter": "off",
"editor.acceptSuggestionOnCommitCharacter": false,
// "debug.console.acceptSuggestionOnEnter": "off",
In keybindings.json:
{"key": "tab", "command": "-acceptSelectedSuggestion",},
{"key": "enter", "command": "-acceptSelectedSuggestion",},
{"key": "shift+tab", "command": "-acceptAlternativeSelectedSuggestion",},
{"key": "shift+enter", "command": "-acceptAlternativeSelectedSuggestion",},
{"key": "tab", "command": "-insertNextSuggestion",},
{"key": "shift+tab", "command": "-insertPrevSuggestion",},
{"key": "tab", "command": "-editor.action.inlineSuggest.commit",},
{"key": "ctrl+right", "command": "-editor.action.inlineSuggest.acceptNextWord",},
{"key": "cmd+right", "command": "-editor.action.inlineSuggest.acceptNextWord",},
{"key": "tab", "command": "-workbench.action.terminal.acceptSelectedSuggestion",},
{"key": "enter", "command": "-workbench.action.terminal.acceptSelectedSuggestion",},
// I'd list things for extensions like GitHub Copilot, but at that point... why would you be using those extensions? :P
To prevent automatic pairings
Since the question post mentioned case causing end to appear in SQL, see also these settings, or search for "autoclosing" in the Settings UI.
"editor.occurrencesHighlight": "multiFile",
"editor.autoClosingBrackets": "never",
"editor.autoClosingComments": "never",
"editor.autoClosingOvertype": "never",
"editor.autoClosingQuotes": "never",
"html.autoClosingTags": false,
"javascript.autoClosingTags": false,
"typescript.autoClosingTags": false,
Note that you'll still be able to trigger suggestions and inline suggestions from the command palette.
caseorbegin. It's still a pain.