Master Cursor Tab autocomplete, ghost text, and AI code suggestions. Triggers on "cursor completion", "cursor tab", "cursor suggestions", "cursor autocomplete", "cursor ghost text", "cursor copilot".
Master Cursor's AI-powered Tab completion system. Tab uses a specialized Cursor model trained for inline code prediction -- it learns from your accept/reject behavior to improve over time.
// You type:
function validateEmail(email: string)
// Ghost text appears:
function validateEmail(email: string): boolean {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; ← gray ghost text
return emailRegex.test(email);
}
| Action | macOS | Windows/Linux |
|---|---|---|
| Accept full suggestion | Tab |
Tab| Accept word-by-word | Cmd+→ | Ctrl+→ |
| Dismiss suggestion | Esc | Esc |
| Force trigger | Ctrl+Space | Ctrl+Space |
Word-by-word acceptance (Cmd+→) is powerful for partial suggestions. If the AI suggests a complete function but you only want the signature, accept word-by-word until you have what you need, then type your own body.
Access via Cursor Settings > Tab:
| Setting | Purpose | Recommendation |
|---|---|---|
| Tab Completion | Master on/off toggle | Keep enabled |
| Trigger in comments | Generate comment text | Disable for less noise |
| Accept suggestion keybinding | Remap Tab to another key | Default (Tab) works best |
| Suggestion delay | Time before ghost text appears | Lower = faster but more flicker |
If Tab suggestions in comments are distracting:
Cursor Settings > Tab Completion > uncheck Trigger in comments
Tab quality depends heavily on available context:
.cursor/rules/*.mdc or .cursorrules content// BAD: Tab has no context about what you want
function process(data) {
// GOOD: Type signature gives Tab strong signal
function processPayment(
amount: number,
currency: 'USD' | 'EUR',
paymentMethod: PaymentMethod
): Promise<PaymentResult> {
Write descriptive function names and type signatures first. Tab uses these as strong signals for generating the body.
// Parse CSV file, skip header row, return array of objects with typed fields
function parseCSV(filepath: string): Promise<Record<string, string>[]> {
// Tab will generate the full implementation based on the comment above
}
| Feature | Trigger | Scope | Speed |
|---|---|---|---|
| Tab | Automatic while typing | Single completion | Instant (~100ms) |
| Inline Edit (Cmd+K) | Manual selection + prompt | Selected code block | ~2-5 seconds |
| Chat (Cmd+L) | Manual prompt | Conversational | ~3-10 seconds |
| Composer (Cmd+I) | Manual prompt | Multi-file | ~5-30 seconds |
Tab is the only feature that runs continuously as you type. It is optimized for speed over capability -- simple completions, not complex reasoning.
If Tab conflicts with other extensions:
Extensions > search "Copilot" > Disable. Running both causes duplicate ghost text.Remap if needed: Cmd+K Cmd+S > search acceptCursorTabSuggestion > assign new key.
Tab gets better with usage. The model learns from:
After a few days on a project, Tab suggestions become noticeably more aligned with your coding style.