개발 공부 기록

🚀 Cursor AI 사용 가이드

miley.7b 2025. 2. 19. 19:18

1. Cursor AI 주요 4가지 기능

1-1. 기능 소개

✅ 1. AI 코드 자동완성 (Tab 자동완성)

  • 단축키: Tab
  • 설명: 코드 작성 중 AI가 추천할 때 Tab을 눌러 자동완성을 적용.

✅ 2. AI 프롬프트 (코드 생성 및 수정 요청)

  • 단축키: Ctrl + K (Windows), Cmd + K (Mac)
  • 설명: 프롬프트 창을 열어 자연어로 코드 생성 및 수정 요청 가능. 
 

✅ 3. COMPOSER (코드 리팩토링, 자동 생성 및 수정)

  • 단축키: Ctrl + I (Windows), Cmd + I (Mac)
  • 설명: 선택한 코드 블록에 대해 AI에게 설명 요청 또는 리팩토링 가능.
  • 예제: "코드 리팩토링 해줘." 입력 후 AI가 최적화된 코드로 변환.
 

✅ 4. CHAT (AI 챗봇 질문 및 코드 편집 요청)

  • 단축키: Ctrl + L (Windows), Cmd + L (Mac)
  • 설명: AI 챗봇과 대화하여 질문하거나, 선택한 코드 블록을 AI에게 수정, 디버깅, 리팩토링 요청 가능.
  • 예제: "코드 설명해 줘." 입력 후 AI가 코드 설명 제공.
 

1-2. CHAT vs COMPOSER vs 프롬프트 비교

기능 CHAT (Cmd + L) COMPOSER (Cmd + I) 프롬프트 (Cmd + K)
역할 AI와 채팅 (코드 설명, 질문, 디버깅) AI 코드 자동 생성 & 수정 AI 프롬프트 실행 (코드 생성 & 수정 요청)
코드 자동완성 ❌ (직접 입력해야 함) ✅ (자동 생성 & 편집) ✅ (AI 프롬프트 실행 후 코드 수정 가능)
기존 코드 수정 (리팩토링)
사용 방식 AI와 대화 (ChatGPT 스타일) 직접 코드 편집 및 자동완성 AI에게 자연어로 요청 & 실행

 


1-3. 언제 사용하면 좋을까?

✔ CHAT → 코드 관련 질문, 개념 설명 필요 → 코드 분석
✔ COMPOSER → 코드를 자동 생성하거나 수정 → 코드 변환
✔ 프롬프트 → AI 프롬프트 실행하여 코드 생성 & 수정 요청 → 코드 생성
 

1-4. 사용 예시

1️⃣ 코드 자동 생성 (AI프롬프트 활용)

📌 사용 방법:
  1. Cmd + K (Ctrl + K for Windows)를 눌러 프롬프트 실행
  2. 생성하고 싶은 코드 입력
  3. AI가 자동으로 코드 생성
  4. 우측 Accept → 코드 적용, Reject → 코드 미적용
 

2️⃣ 코드 리팩토링 및 최적화 (COMPOSER 활용)

리팩터링 할
  1. 코드 블록 선택
  2. Cmd + I (Ctrl + I) 실행 (Add Context 부분에 관련 코드만 참조되었는지 확인)
  3. "코드 리팩토링 해줘" 입력
  4. AI가 더 최적화된 코드로 변환. 코드에 바로 반영됨 (Accept → 코드 적용, Reject → 코드 미적용)

 

 

3️⃣ 코드 설명 및 디버깅 (CHAT 활용)

📌 사용 방법:
  1. 이해하기 어려운 코드 블록을 선택
  2. Cmd + L (Ctrl + L) 실행하여 CHAT 활성화
  3. "코드 설명해줘" 또는 "버그 찾아줘" 입력
  4. AI가 코드 설명 및 버그 수정 방법 제공 (코드가 바로 적용되지 않고 Apply 버튼을 따로 눌러야 함)

 

1-5. 부가기능

✅CHAT, COMPOSER 입력창 기능

1. Ask Followup (Cmd + Y) - AI에게 후속 질문하기
  • AI가 제공한 응답에 대해 추가 질문을 할 수 있는 기능
  • 기존 질문을 유지하면서 새로운 질문을 추가할 수 있음
  • 이전 맥락을 기억한 상태에서 후속 질문을 할 수 있어 더 정확한 답변을 받을 수 있음
2. @ to mention - 특정 키워드 언급하여 AI에 추가 정보 제공
  • AI가 특정 코드 블록 또는 개념을 참고하도록 할 수 있음
  • **"@변수명", "@함수명", "@파일명"**을 사용하여 AI가 해당 요소를 인식하도록 유도
  • 특정 파일이나 함수에 대한 설명 요청 시 유용
항목 설명 사용 예제 (@ 활용)
Files 현재 프로젝트의 파일 목록 @Files에서 userService.java 파일의 내용을 참고해줘
Folders 프로젝트 내 폴더 구조 @Folders에서 services 폴더 내 모든 파일을 분석해줘
Code 코드 파일을 AI가 인식하도록 지시 @Code의 UserService.java 파일 스타일을 유지하면서 새 함수를 생성해줘
Docs 프로젝트 내 문서 파일 (예: README.md, API 문서) @Docs에서 API 명세를 참고해 새로운 엔드포인트를 만들어줘
Git Git 상태, 브랜치, 변경 이력 관련 정보
(2-2 에서 자세히 설명)
@Git에서 최근 커밋 내역을 확인하고 변경사항 요약해줘
Notepads AI가 생성한 노트 및 임시 기록 @Notepads에 저장된 지난 코드 리뷰 내용을 참고해줘
Summarized
Composers
AI가 요약한 코드 또는 문서 내용 @Summarized Composers의 내용을 기반으로 코드 개선점을 찾아줘
Cursor Rules AI가 따를 규칙 설정 (코드 스타일 등) @Cursor Rules에서 이 프로젝트의 코드 스타일을 참고해서 리팩토링 해줘
Codebase 전체 코드베이스 내 검색 및 분석 @Codebase에서 UserService와 관련된 모든 함수 목록을 정리해줘
Lint errors 코드 내 린트(lint) 오류 목록 @Lint errors에서 ESLint 오류를 확인하고 수정해줘
Web 웹에서 추가 정보를 검색하여 참고 가능 @Web에서 최신 OAuth 2.0 인증 방법을 검색해줘

 

3. (Up 화살표) to select - 이전 입력한 질문 다시 선택하기
  • 이전 질문을 다시 선택하여 수정하거나 재사용 가능
  • Up 화살표(↑) 를 눌러 이전 입력한 질문을 불러올 수 있음
  • 자주 반복하는 질문을 다시 입력할 필요 없이 빠르게 선택 가능
 

2. Cursor AI 활용 팁 & 고급 기능

2-1. AI와 함께 터미널 명령어 활용하기

✅ AI에게 터미널 명령어 추천받기

📌 터미널에서 실행할 명령어를 모를 때 AI에게 추천받을 수 있음
  1. Cmd + L (Ctrl + L)을 눌러 CHAT 실행
  2. "zsh: permission denied: ./gradlew 해결해 줘"" 입력
  3. AI가 "chmod +x gradlew"과 같은 적절한 명령어 추천
  4. Run 버튼으로 AI가 추천한 명령어를 터미널에서 직접 실행

 

💡 AI를 활용하면 복잡한 CLI(Command Line Interface) 명령어도 쉽게 사용할 수 있음!
⁠"Git에서 최신 변경 사항을 가져오고, 브랜치를 main으로 전환한 후, 로컬 변경 사항을 커밋하고 푸시하는 명령어를 알려줘."

2-2. @Git 활용법: Cursor에서 Git 연동 및 AI 활용

기능 활용 예제 (@Git) 효과
Git 상태 확인 "@Git에서 현재 변경된 파일 목록을 알려줘." git status 결과 요약
최근 커밋 내역 확인 "@Git에서 최근 5개의 커밋 메시지를 요약해줘." git log 결과 요약
브랜치 변경 사항 비교 "@Git에서 현재 브랜치와 main 브랜치의 차이를 비교해줘." git diff main 분석
변경된 코드 리뷰 "@Git에서 최근 변경된 파일들의 코드 리뷰를 해줘." 자동 코드 리뷰 제공
코드 최적화 "@Git에서 최근 변경된 코드들을 최적화해줘." 코드 성능 및 가독성 개선
자동 커밋 메시지 생성 "@Git에서 최근 변경 사항을 기반으로 커밋 메시지를 생성해줘." 의미 있는 커밋 메시지 추천
PR 요약 및 리뷰 "@Git에서 현재 PR의 변경 내용을 요약해줘." 자동으로 PR 설명 정리

 

3. 기타 유용한 설정

3-1. Hot Code Replace (HCR)

  • 애플리케이션을 재시작하지 않고도 코드 수정사항을 적용 가능
  • 디버깅 중 메서드 내부 코드 수정 가능
  • "auto": 자동으로 HCR 수행
  • "never": HCR 비활용
  • "manual": 수동으로 HCR 수행

3-2. Cursor에서 사용 가능한 GPT 모델들

모델 특징 장점 추천 사용 사례
gpt-4o OpenAI 최신 GPT-4o 모델 빠른 속도 + 고품질 응답 일반적인 코딩, 문서 요약, AI 챗봇
gpt-4o-mini 경량화된 GPT-4o 버전 더 빠른 속도 & 비용 절감 간단한 코드 생성, 빠른 응답
o1-mini OpenAI의 실험적 소형 모델 속도 우선, 비용 절감 간단한 작업, 빠른 반복 요청
o1-preview OpenAI의 최신 실험적 모델 새로운 기능 테스트 가능 신기능 실험, 최신 AI 테스트
o1 OpenAI 중간급 모델 균형 잡힌 성능 일반적인 코드 생성 및 분석
o3-mini OpenAI 소형 모델 속도 빠름 & 비용 낮음 기본적인 코드 추천, 간단한 질문
claude-3.5-sonnet Anthropic Claude 3.5 모델 창의적인 코드 & 문서 생성 강점 복잡한 코드 작성, 문서 생성
deepseek-r1 DeepSeek AI 모델 코드 특화, 속도 빠름 개발자 친화적인 코드 추천

 

🚀 최적의 AI 모델 선택 가이드

목적 추천 모델
최고 성능, 복잡한 코드 생성 gpt-4oclaude-3.5-sonnet
빠른 응답 + 균형 잡힌 성능 gpt-4o-minio1
비용 절감 + 기본적인 코드 자동완성 o3-minio1-mini
문서 생성 및 코드 문서화 claude-3.5-sonnet
속도가 가장 중요한 경우 o3-minideepseek-r1
코드 변환 및 최적화 deepseek-r1gpt-4o

 

3-3. Rules for AI

✅ "Rules for AI"란?

📌 "Rules for AI"를 설정하면 다음과 같은 효과를 얻을 수 있음:
  • AI가 팀의 코딩 스타일과 일관되도록 코드 작성
  • 특정 코드 패턴이나 금지된 라이브러리, 스타일 규칙 적용 가능
  • AI가 리팩토링할 때 특정 원칙을 준수하도록 설정
  • 테스트 코드 작성 방식, 네이밍 규칙, 코드 문서화 스타일 반영 가능

✅ 추천 설정

설정
의미
Always respond in Korean AI가 항상 한국어로 응답
You are a professional Spring Backend developer assistant. Spring Boot 백엔드 개발 보조 역할 수행
Always suggest code snippets when necessary. 코드 예제를 항상 포함하여 응답
Suggest domain driven develop DDD(도메인 주도 설계) 방식을 추천
Keep responses concise and informative, unless a detailed explanation is required. 응답을 간결하고 유용하게 제공
All classes and methods must include Javadoc comments. 모든 클래스와 메서드에 Javadoc 주석을 포함해야 함.
Use camelCase for variable and method names. 변수명과 메서드명은 camelCase 스타일을 따라야 함.
All API endpoints must use @RequestMapping, @GetMapping, or similar annotations. 모든 API 엔드포인트는 Spring MVC 애너테이션(@GetMapping, @PostMapping )을 사용해야 함.
Use @Transactional in service layer methods where applicable. 서비스 계층의 메서드에서 트랜잭션이 필요한 경우 @Transactional을 사용해야 함.
Avoid using orElse(null) when working with Optional, prefer orElseThrow(). Optional을 사용할 때 orElse(null)을 피하고 orElseThrow()를 사용해야 함 (NullPointerException 방지).
Lombok usage is limited to @Getter, @Setter, and @RequiredArgsConstructor; avoid using @Data. Lombok 사용을 @Getter, @Setter, @RequiredArgsConstructor로 제한하고, @Data는 사용하지 않음 (불필요한 메서드 생성 방지).
Service layer should not return entity objects directly; use DTOs instead. 서비스 계층에서 엔티티를 직접 반환하지 않고 DTO(Data Transfer Object)를 사용해야 함.
Exception handling should be managed using @ControllerAdvice. 예외 처리는 @ControllerAdvice를 사용하여 중앙 집중적으로 관리해야 함.
Follow the layered architecture: Controller → Service → Repository. 레이어드 아키텍처를 준수해야 함 (Controller → Service → Repository 구조 유지).