Copilot and intellisense: tab always triggers copilot over intellisense?

When there is both a Copilot and an Intellisense suggestion, tab always chooses the Copilot suggestion in Cursor. In VSCode, tab chooses the Intellisense suggestion, which is often more correct. Why?

2 Likes

This is intentional!

In Cursor:

  1. Tab always accepts Copilot’s ghost text.
  2. Enter always accepts the selected snippet from the Intellisense dropdown.

In VSCode, as of writing this, there is a race condition between Copilot and Intellisense: if Copilot gives a suggestion before Intellisense, no Intellisense will ever show up, and if Intellisense gives a suggestion before Copilot, no Copilot ghost text will ever show up. They have this race condition because both Copilot and Intellisense are accepted by the same key (tab).

We think it makes more sense to separate the two out: tab is always for Copilot; Enter is always for Intellisense. This gets rid of the race condition, allows you to see both suggestions at the same time, and, in my opinion, is better for your muscle memory.

That said, it may take some time getting used to. If you prefer VSCode’s way of handling this, or you wish we handled this a different way, please let me know!

5 Likes

is there any way to customize this? I like the vscode’s way of handling this

2 Likes

@arvid220u

Currently there’s not a way to customize this. I’ll look into adding a setting for this!

1 Like

Thank you @arvid220u! It’s one thing that’s keeping me from fully using cursor. Would consider to buy pro plan if this is customizable :grin:

Adding setting here! Currently waiting for this PR to be merged in vscode: Add setting to allow inline completions and suggest widget to coexist by arvid220u · Pull Request #196182 · microsoft/vscode · GitHub

I want the same behaviour as Github Copilot, accept auto complete if present with tab, if instead i want the Copilot++, press esc and then tab

3 Likes

I really want the “Accept Completion” hotkey to be configurable. Coming from VS Code where tab prioritizes the suggestions dropdown menu, having that always accept the Copilot++ suggestion is frustrating because then I spend more time fixing code than being productive.

4 Likes

This feels like a very opinionated decision — it should be up to the end user to configure the hotkeys they find make most sense for them.

3 Likes

If it helps someone, I was able to configure a different shortcut for intellicence, while using tab for cursor tab. I also set intellicence to not auto display unless I press a shortcut. However in my case I never really use intellicence, but if I ever need that menu I can bring it up.

I like my return key to always insert a new line, not to accept suggestions, so my workaround for this was to add a keybind for the acceptSelectedSuggestion event. Now I can hit tab to accept Copilot’s suggestions, and shift+tab to accept IntelliSense’s:

{
  "key": "shift+tab",
  "command": "acceptSelectedSuggestion",
  "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && suggestionMakesTextEdit && textInputFocus"
}
1 Like

Hey @arvid220u, the PR you mentioned was closed without merging.

I prefer VSCode’s way of handling this. Changing this default is very opinionated and makes migrating to Cursor a pain.

How can we customize this?

2 Likes