AI와 개발을 쉽게 이해하는 실험실

비개발자도 따라오는 AI 도구, 자동화, 개발 실험 기록

개발 & 기술/개발 환경

VS Code Tab 자동완성 안 될 때: Cursor 확장 충돌 확인 순서

루민 Lumin 2026. 7. 31. 16:24
반응형

VS Code에서 Tab 자동완성이 갑자기 안 될 때, Cursor 관련 확장이 조용히 키를 가로채는 경우가 많습니다. 이 글은 원인을 어디부터 확인해야 하는지, 확장을 지우지 않고도 충돌을 풀 수 있는 방법을 순서대로 정리합니다.

VS Code Tab 자동완성 안 될 때: Cursor 확장 충돌 확인 순서의 핵심 개념을 단순한 테크 일러스트로 표현한 대표 이미지

VS Code에서 Tab 키를 눌러도 자동완성이 들어가지 않는 증상은 일부 환경에서는 다른 AI 확장이 같은 Tab 키를 먼저 가로채면서 생깁니다. 특히 Cursor 관련 확장을 설치했다가 지우거나, VS Code와 Cursor를 번갈아 쓰는 환경에서 나타날 수 있습니다. 이 글은 확장을 전부 삭제하지 않고도 원인을 좁혀나가는 순서를 정리합니다. 처음 겪으면 "VS Code가 망가졌나" 싶어서 재설치부터 하기 쉬운데, 실제 원인이 설정 한두 줄에 있는 경우도 있습니다.

용어부터 짧게 정리하겠습니다. VS Code는 마이크로소프트가 만든 무료 코드 편집기이고, Cursor는 VS Code를 기반으로 AI 기능을 얹은 별도 편집기입니다. 그리고 "확장(Extension)"은 편집기에 기능을 덧붙이는 플러그인 같은 것입니다. 이번 글에서 다룰 문제는 이 확장들끼리 같은 단축키를 두고 다투는 상황입니다.

증상부터 정확히 구분하기

Tab 자동완성이 "안 된다"고 느낄 때 실제로는 서로 다른 3가지 상황이 섞여 있습니다. 지금 내 증상이 어디에 해당하는지부터 봐야 해결이 빨라집니다.

증상 화면에 보이는 것 유력한 원인
회색 미리보기가 아예 안 뜸 Tab을 눌러도 아무 반응 없음 AI 자동완성 확장이 꺼졌거나 로그인 안 됨
회색 미리보기는 뜨는데 Tab이 안 먹음 흐린 글씨는 보이지만 Tab이 들여쓰기만 함 Tab 키 충돌 (이 글의 주제)
목록은 뜨는데 원하는 걸 못 고름 팝업 메뉴는 나오는데 Tab이 다른 항목을 넣음 IntelliSense와 AI 제안 우선순위 문제

이 글은 두 번째 경우, 즉 회색으로 미리보기는 뜨는데 Tab을 눌러도 실제 코드로 확정되지 않는 상황에 집중합니다. 나머지 두 경우는 원인이 다르므로 접근 순서도 달라집니다.

Cursor 확장이 왜 충돌을 일으키나

핵심은 이렇습니다. 여러 AI 자동완성 확장이 동시에 Tab 키에 "자기 명령"을 등록하면, VS Code는 그중 하나만 실행합니다. 그런데 그 "하나"가 지금 화면에 보이는 미리보기를 만든 확장이 아닐 수 있습니다.

Cursor 자체는 VS Code와 별개 앱이라 서로 간섭이 없어야 정상입니다. 문제는 다음 같은 상황입니다.

  • Cursor를 쓰다가 VS Code로 돌아왔을 때, 예전에 VS Code에 설치했던 Cursor 관련 확장이 남아있는 경우
  • GitHub Copilot, Codeium, Tabnine, Continue 같은 다른 AI 확장을 함께 설치한 경우
  • 회사 계정과 개인 계정을 오가며 확장 동기화가 꼬인 경우

이 확장들은 각자 "Tab 키를 누르면 내 제안을 넣어라"라는 규칙(키바인딩)을 등록합니다. 규칙이 중복되면 VS Code 내부의 우선순위에 따라 하나만 실행되는데, 이때 화면에 보이는 미리보기와 실제 실행되는 명령이 어긋나면 "Tab이 안 먹는" 것처럼 느껴집니다.

💡 핵심: 미리보기를 만든 확장과 Tab 명령을 가져간 확장이 다르면 증상이 나타납니다.

확인 순서 (위에서부터 하나씩)

한 번에 여러 개를 건드리면 뭐가 문제였는지 알 수 없게 됩니다. 아래 순서대로 하나씩만 확인하고 넘어가세요.

1단계: 설치된 AI 확장 목록 확인
      ↓
2단계: Tab 키 바인딩 충돌 확인
      ↓
3단계: 자동완성 관련 설정 3개 확인
      ↓
4단계: 확장을 하나씩 비활성화
      ↓
5단계: 그래도 안 되면 사용자 설정 초기화

1단계: 설치된 AI 확장 목록 확인

VS Code 왼쪽 사이드바에서 확장 아이콘(네모 4개 모양)을 누르고, 검색창에 @installed를 입력합니다. "설치된 확장만 보여줘"라는 명령입니다.

이 목록에서 다음 이름이 들어간 확장이 몇 개나 있는지 세어보세요.

  • Cursor
  • Copilot
  • Codeium
  • Tabnine
  • Continue
  • IntelliCode
  • AI, Autocomplete, Completion 같은 단어가 들어간 것

두 개 이상이면 충돌 가능성이 있습니다. 지금 실제로 쓰는 것 하나만 남기고 나머지는 "사용 안 함(Disable)"으로 두는 것이 가장 빠릅니다. 삭제까지 안 해도 됩니다.

2단계: Tab 키 바인딩 충돌 확인

VS Code에서 Ctrl+Shift+P(맥은 Cmd+Shift+P)를 누르면 상단에 명령 팔레트가 열립니다. VS Code의 모든 기능을 이름으로 검색해서 실행하는 창입니다.

여기에 "Preferences: Open Keyboard Shortcuts"를 입력해 엽니다. 검색창에 tab을 넣으면 Tab 키에 연결된 모든 명령이 나옵니다.

같은 조건(예: editorTextFocus && inlineSuggestionVisible)에서 Tab을 처리하는 명령이 여러 개 겹쳐 있으면 그것이 충돌 지점입니다. 자주 보이는 경합 명령은 다음과 같습니다.

명령 이름 등록한 주체
editor.action.inlineSuggest.commit VS Code 기본 인라인 제안
editor.action.tab 편집기 기본 들여쓰기
Copilot·Codeium·Cursor 계열 자체 명령 각 확장

같은 상황(when 조건)에 여러 개가 걸려 있고, 그중 지금 쓰려는 확장의 명령이 위쪽에 없으면 그게 원인입니다.

3단계: 자동완성 관련 설정 3개 확인

명령 팔레트에서 "Preferences: Open User Settings (JSON)"을 열면 개인 설정 파일이 뜹니다. 여기에 아래 세 항목이 어떻게 되어 있는지 확인하세요.

{
  "editor.inlineSuggest.enabled": true,
  "editor.tabCompletion": "on",
  "editor.acceptSuggestionOnEnter": "on"
}

각 항목이 하는 일은 이렇습니다.

  • editor.inlineSuggest.enabled: 회색 미리보기 자체를 켤지 여부. 이게 false면 미리보기가 아예 안 뜹니다.
  • editor.tabCompletion: Tab 키로 제안을 넣을지 여부. off로 되어 있으면 미리보기는 떠도 Tab이 안 먹습니다.
  • editor.acceptSuggestionOnEnter: Enter로도 제안을 받을지. 이건 취향 문제입니다.

editor.tabCompletionoff로 되어 있는 경우가 의외로 많습니다. 예전에 어떤 튜토리얼을 따라 하다가 이 값을 꺼둔 뒤 잊어버린 사용자, 또는 팀 프로젝트의 워크스페이스 설정에서 강제로 꺼진 경우가 있습니다.

4단계: 확장을 하나씩 비활성화

여기까지 해도 안 되면 범인을 좁혀야 합니다. VS Code의 강력한 기능 중 하나가 일시적 확장 비활성화입니다.

명령 팔레트에서 "Extensions: Disable All Installed Extensions"를 실행하고 VS Code를 재시작합니다. 이 상태에서 Tab 자동완성이 정상이면(정확히는 VS Code 기본 자동완성만 뜨는 상태) 확장 중 하나가 범인입니다.

그다음 확장을 한 번에 하나씩만 다시 켜면서 언제 증상이 재현되는지 봅니다. 두 개씩 켜면 원인을 놓칩니다.

⚠️ 이 방법은 시간이 조금 걸리지만 확장이 5~6개 이하라면 가장 확실합니다.

그래도 안 될 때: 사용자 설정 리셋

위 4단계까지 다 해도 증상이 그대로면, 개인 설정 파일 어딘가에 오래된 키바인딩이 남아있을 가능성이 큽니다. 이때 확인할 곳은 두 군데입니다.

첫째는 keybindings.json입니다. 명령 팔레트에서 "Preferences: Open Keyboard Shortcuts (JSON)"으로 엽니다. Tab이 들어간 항목 중, 지금 쓰지 않는 확장(예를 들어 이미 지운 확장) 이름이 남아있다면 그 줄만 지웁니다. 파일 전체를 지우지는 마세요. 다른 커스텀 설정까지 날아갑니다.

둘째는 워크스페이스 설정입니다. 프로젝트 폴더 안의 .vscode/settings.json이 있는지 봅니다. 팀 프로젝트라면 이 파일이 개인 설정을 덮어쓰고 있을 수 있습니다. 회사 저장소에서 이 파일이 editor.tabCompletion을 강제로 끄고 있는 경우도 있을 수 있습니다.

Cursor를 계속 쓸 거라면

Cursor를 주 편집기로 쓰기로 마음먹었다면, VS Code 쪽에서는 Cursor 관련 확장을 완전히 제거하는 것이 깔끔합니다. 그리고 두 편집기의 설정을 억지로 동기화하지 않는 편이 낫습니다.

Cursor는 요금 정책과 기능 구성이 계속 갱신되는 편이라, 지금 시점의 유·무료 구분이 궁금하다면 공식 요금 페이지(cursor.com/pricing)에서 직접 확인하는 것을 권합니다. 이 글에서는 가격 자체는 다루지 않습니다.

두 편집기를 함께 쓴다면 다음 원칙만 지켜도 충돌이 확 줄어듭니다.

  • VS Code에는 VS Code용 AI 확장 하나만
  • Cursor는 Cursor 자체 자동완성만 사용
  • 확장 동기화(Settings Sync) 켤 때 편집기별로 프로필 분리
  • .vscode/settings.json은 팀과 공유하기 전에 개인 설정과 충돌하는지 검토

함께 보면 좋은 글

원인을 순서대로 격리하는 방법

앞의 5단계가 "무엇을 확인할지"였다면, 이번에는 "확인한 결과를 어떻게 좁혀갈지"입니다. 한 번에 여러 변수를 바꾸면 어느 조치가 효과가 있었는지 알 수 없으므로, 아래 순서대로 한 번에 하나만 바꾸고 그때마다 Tab 동작을 테스트합니다.

  1. 재현 조건 고정: 테스트에 쓸 파일을 하나 정합니다. 예를 들어 새 .js 파일을 만들고 function hello 정도만 입력한 뒤, 여기서 Tab을 눌러 회색 미리보기가 확정되는지를 매번 같은 방식으로 확인합니다. 파일 종류나 커서 위치가 바뀌면 결과 해석이 흔들립니다.
  2. 워크스페이스 vs 사용자 설정 분리: 먼저 프로젝트 폴더가 아닌, 아무 설정도 없는 빈 폴더를 열어 같은 테스트를 합니다. 빈 폴더에서 정상이라면 .vscode/settings.json이 원인입니다. 빈 폴더에서도 실패하면 사용자 설정 또는 확장 문제로 범위가 좁혀집니다.
  3. 확장 이등분: 4단계에서 전부 껐다가 하나씩 켜는 방법이 시간이 오래 걸린다면, 절반씩 켜는 방식이 빠릅니다. 확장이 8개라면 먼저 4개만 켜고 테스트, 정상이면 나머지 4개 중에서, 실패면 켠 4개 중에서 다시 절반씩 좁힙니다.
  4. 키바인딩 마지막: 확장을 다 껐는데도 Tab이 이상하다면 그때 keybindings.json을 봅니다. 확장이 켜져 있는 상태에서 키바인딩부터 손대면, 확장이 다시 등록하는 규칙과 뒤섞여 원인이 흐려집니다.

각 단계에서 바꾼 항목과 그때의 Tab 동작을 짧게 메모해 두면, 나중에 롤백할 때도 도움이 됩니다.

해결됐는지 확인하는 방법

조치를 마쳤다면 "우연히 되는 것"과 "제대로 고쳐진 것"을 구분해야 합니다. 아래 항목을 순서대로 통과하면 해결로 간주할 수 있습니다.

  • 테스트 파일에서 회색 미리보기가 뜨고, Tab을 누르면 그 내용이 실제 코드로 확정된다
  • VS Code를 완전히 종료했다가 다시 열어도 같은 동작이 재현된다 (창만 새로고침이 아니라 프로세스 재시작)
  • 다른 언어 파일(예: .py, .ts)에서도 동일하게 동작한다
  • 원래 문제가 있던 실제 프로젝트 폴더를 다시 열었을 때도 동작한다
  • 명령 팔레트의 "Preferences: Open Keyboard Shortcuts"에서 Tab 검색 시, 같은 when 조건에 중복 등록된 항목이 남아있지 않다

특히 세 번째와 네 번째 항목이 중요합니다. 빈 폴더에서만 되고 실제 프로젝트에서 안 된다면 워크스페이스 설정이 아직 원인으로 남아있는 것입니다. 확인 도중 하나라도 실패하면 앞의 격리 단계로 돌아가 해당 범위만 다시 좁힙니다.

변경을 되돌리는 절차

위 단계를 진행하다 보면 확장을 끄고, 설정 값을 바꾸고, 키바인딩 줄을 지우는 등 여러 변경이 쌓입니다. 만약 조치 후 오히려 다른 기능(예: 다른 확장의 자동완성, 팀 공용 설정)이 망가졌다면 아래 순서로 되돌립니다.

  1. 가장 마지막에 바꾼 것부터 되돌리기: 원칙은 후입선출입니다. 방금 지운 keybindings.json 줄이 있다면 그것부터 복구합니다. 격리 단계에서 메모해 둔 순서가 여기서 쓰입니다.
  2. 설정 파일 되돌리기: settings.json을 편집하기 전 백업을 만들어두지 않았다면, VS Code의 파일 편집 기록(로컬 히스토리)이나 Git으로 관리 중인 dotfiles에서 이전 버전을 가져옵니다. .vscode/settings.json은 팀 저장소의 커밋 기록으로 되돌릴 수 있습니다.
  3. 비활성화한 확장 다시 켜기: "Extensions: Enable All Extensions"로 한 번에 되돌릴 수 있습니다. 다만 원래 충돌이 있던 상태로 완전히 복귀하므로, 문제 재현을 원치 않는다면 4단계에서 범인으로 지목된 확장 하나만 비활성화 상태로 남겨둡니다.
  4. 최후 수단: 사용자 설정 자체가 꼬였다고 판단되면, settings.jsonkeybindings.json을 통째로 백업 폴더로 옮기고 VS Code를 재시작하면 기본값으로 뜹니다. 이후 백업에서 필요한 줄만 골라 다시 옮기는 편이 안전합니다.

롤백까지 마치면, 되돌린 상태에서 앞 절의 확인 항목을 다시 통과하는지 점검해 원래 환경이 회복됐음을 확실히 합니다.

막히면 여기부터 다시 볼 것

Tab 자동완성 문제는 재설치로 해결하려 하면 오히려 오래 걸릴 수 있습니다. 순서를 지켜 하나씩 좁혀가면 환경과 절차에 따라 원인을 특정할 수 있습니다.

증상을 먼저 3가지 중 하나로 좁히고, 확장 목록에서 AI 계열이 몇 개인지 세고, Tab 키바인딩과 설정 3개를 확인합니다. 여기까지 해서 안 되면 확장을 전부 껐다가 하나씩 켜면서 범인을 찾습니다. 마지막으로 keybindings.json과 워크스페이스 설정을 봅니다.

다음 글에서는 이 문제와 짝을 이루는 상황, 즉 "회색 미리보기 자체가 안 뜨는 경우"의 점검 순서를 다뤄볼 예정입니다. 그쪽은 원인이 로그인 세션이나 네트워크 쪽으로 가는 경우가 많아서 접근이 또 달라집니다.

반응형