Ambiguity with the Tab Key in Cursor

Our goal with this is to try and always show our AI completions when you’d want them, so when you just want to Tab something forward, no completion should show (unless it’s tabbing for you!).

I’d have to confirm if we have a way of rebinding the Tab key for accepting completions, but the better solution on our end here would be to improve the AI completions, so it either doesn’t suggest anything, or suggests the correct indentation on your behalf!

FYI You should be able to hit escape on an AI completion to reject it, then Tab as normal, which may be enough to keep you going as we improve completions in the future!

If you have any bad AI completions, do drop them here and I’ll pass them to the team.

1 Like

Any bad completions? About 80% of the time on my current project, the AI suggests completions that are somewhere between useless and counterproductive. It’s really only helpful on the margins.


// ... existing keybindings ...
{
    "key": "ctrl+tab",
    "command": "acceptSelectedSuggestion",
    "when": "suggestWidgetVisible && textInputFocus"
},
{
    "key": "tab",
    "command": "-acceptSelectedSuggestion",
    "when": "suggestWidgetVisible && textInputFocus"
}
// ... existing keybindings ...

{
    "key": "ctrl+tab",
    "command": "editor.action.triggerSuggest",
    "when": "editorTextFocus && !suggestWidgetVisible"
}

Sorry, but this has absolutely nothing to do with whether the completions are “good” or “bad”.

You are expecting your users to constantly, thousands of times a day, stop what they are doing, break out of any flow state, read what random suggestion an AI may or may not even be making, and which may appear anywhere on the screen, before every time they press one of the most common keys in programming.

Are we being pranked? I’m so confused what’s going on here. Make the magic feature (which is truly cool and powerful!) re-bindable to any key using the existing key binding infrastructure, and you can do whatever you want with the feature. If you continue to force it on TAB, you will alienate a non-trivial chunk of your user base.

I have multiple subscriptions to Cursor. I advocate for Cursor. I want Cursor win. This is not the way.

3 Likes

I appreciate your feedback!

As I said, I’ll bring this up with the team to see if we can make this re-bindable. The goal here is to correctly predict if you want indentation in the first place and suggest it instead of you having to do it yourself.

I understand there’s probably no harm in giving users the choice here, so we will see what’s possible.

A couple of things here. First of all, tab key is a lot more nuanced than just indentation. Yes that is one of the crucial and necessary features of Tab, but Tab also allows you to accept the Intellisense recommendations, which are often more accurate than the AI completion. In specific, Intellisense can only recommend me options that actually exist, whereas the AI is hallucinating code all the time! Auto-imports are also a really great feature mapped to tab key that cursor has now hijacked. No I don’t need AI completions to predict what intellisense is going to do, or if I want to make the indentation or not. Let the tools work for us and give us a choice on how to do them. Don’t make the value judgement for us, we can decide that for ourselves. How could giving your users a choice possibly be harmful? The inverse of that statement is definitely true. I am seeing 5+ different threads on this issue, and there are multiple users considering the switch back to vscode + copilot (myself included). Please do not think of this as an optional feature request, but something your product needs to implement in order to retain users who already have this functionality in the competing (FREE) product, vscode.

3 Likes

I’ve switched back to vscode just because of this issue. Can you please fix it so I can come back.

2 Likes

Not being able to rebind this also makes it a nuisance to use user snippets because for some reason the AI suggestion is given preference even though a chosen user snippet is guaranteed to be correct while the AI suggestion isn’t.

2 Likes

Using Cursor for indentation is painful. It’s slow, cumbersome and disorientating, often mixing in weird unpredictable code changes with it. To also remove the method to indenting normally with tab is madness. Please give the option to remap Cursor autocomplete. And preferably remove indentation suggestions entirely unless you can get it to work a lot better.

2 Likes

It constantly, incessantly provides AI completions even when its almost unnecessary. This is such a simple yet essential feature to just change the ■■■■ button to something else. I might just cancel pro and request a refund

2 Likes

I very much agree that ‘tab’ needs to be able to be remapped to a different key.

I only use the full suggestion 5% of the time or so (so I generally use the Ctrl+RightArrow).

…But about every 5 seconds, I will be frustrated/interrupted with it autocompleting when I just want to indent. Even if the suggestions were good 80% of the time, users should have the option of remapping to a different key if they want.

This inflexibility is so bad it’s probably the main reason I will stop subscribing to Cursor.

2 Likes

Still a problem still needs fixing.
Very close to dropping my subscription. Compose is the only feature keeping my subscribed but I’m actively looking at other vscode extensions as an alternative.

It’s well and good to aspire to design an editor that never does the wrong thing, it’s absolutely moronic to not provide an escape hatch when it does.

2 Likes

Good news - we’re planning to add tab remapping in the next update or two! I totally get the frustration here, especially since Tab is such a fundamental key for developers. The team recognizes this is a major pain point and we’re working on giving you control over these bindings

In the meantime, you can use Ctrl+] or Cmd+] for indentation, and Escape to reject unwanted completions. Not ideal, but should help until we get the remapping feature shipped

For more info on current keybindings, check out Cursor – Welcome to Cursor

4 Likes

Is there a specific release this is slated in? This is very much needed.

I don’t think the severity of this issue is fully recognized by the dev team.

The most recent two to three updates has completely broken the Tab key for me: I cannot use it for indentation, nor can I use it for code completion. I don’t know what is the reason for promoting simple, vscode-copilot-like in-line code completion to “Cursor Tab” with locked key-binding.

Not only the modification to Keyboard Shortcuts for Accept Edits it is locked, even if I disable Cursor Tab and bind Tab key to “indent line” it does not work. Now my Tab key is rendered completely useless and I have to go back to VSCode + Copilot where I can just

  • Tab to accept in-line suggestion, OR
  • Tab to indent after rejecting in-line suggestion
    and just let my 20$ Cursor membership go to waste.

Adding to the frustration, I cannot roll back my installation of Cursor to an older version that has been working since you guys do not provide an archive of older versions.

C’mon, please do better.

1 Like

Just updated. Tab is completely broken, which breaks the entire product for me. What should our settings be to get the old behavior?

EDIT: giving cursor’s tab priority seems to work:

// ~/Library/Application Support/Cursor/User/keybindings.json
// add ` && !cpp.shouldAcceptTab` to end of whens

// prioritize cursor over tab character
{
    "key": "tab",
    "command": "tab",
    "when": "editorTextFocus && !editorReadonly && !cpp.shouldAcceptTab"
}
// prioritize cursor over editor suggestion
{
    "key": "tab",
    "command": "acceptSelectedSuggestion",
    "when": "suggestWidgetHasFocusedSuggestion && suggestWidgetVisible && textInputFocus && !cpp.shouldAcceptTab"
},
2 Likes

Tab key being messy is single handledly going to be the reason I will unsubscribe from pro. In the latest version, hitting tab clears the current selection when there is autocomplete available and my intention is to select the autocomplete option. I am pretty sure the behaviour was different in the previous releases.

3 Likes


Thank you for making the tab function re-mappable, however certain modifier keys (such as option or cmd) do not work as a remap of tab, this is necessary because macos by default does not allow caps-lock to be reassigned to anything other than a subset of modifiers, those wishing to use caps lock as their cursor tab key without triggering caps-lock would reassign it to a key like option, only for it not to work. Is there a JSON config option I can perform on my end, or would this require a developer change?

Ditto. Not being able to use tab is wild.

The best solution is to do both. Allow the user to rebind the tab key, and make the suggestions just an indent when that’s the best option. @dkamins is right that vscode has a robust keyboard binding system, and it should be used. (Also, think of your differently abled users!)

…and I beg you to do it sooner rather than later. This is very annoying for people who, rather than vibing alone, actually write code. I see one user above has already cancelled their subscription because of it. I have to say it’s wearing on me as well…

1 Like