Cursor 설정에는 "YOLO 모드"라는 재미있는 이름의 기능이 있습니다.
이 모드를 켜면, AI 에이전트가 단순히 코드를 생성하거나 수정 제안을 하는 것을 넘어, 실제로 테스트를 실행하고 빌드 오류를 확인하며, 문제가 해결될 때까지
스스로 코드를 반복해서 수정
하도록 허용할 수 있습니다.
예를 들어, 다음과 같은 프롬프트를 YOLO 모드에 설정해둘 수 있습니다.
any kind of tests are always allowed like vitest, npm test, nr test, etc.also basic build commands like build, tsc, etc.creating files and making directories (like touch, mkdir, etc) is always ok too
이렇게 설정하면, AI가 TypeScript 코드(tsc)를 빌드하다가 오류를 발견하면, 스스로 그 오류를 수정하고 다시 빌드를 시도하는 작업을 반복하여 결국 빌드를 성공시키는 놀라운 경험을 할 수 있습니다.
복잡한 기능을 AI에게 요청할 때, 단순히 "이런 함수 만들어줘" 라고 하는 것보다 테스트 케이스를 먼저 작성하도록 지시하는 것이 훨씬 효과적입니다.
마치 우리가 TDD(Test-Driven Development)를 하는 것처럼요!
예를 들어, "마크다운 문자열을 HTML 문자열로 변환하는 함수를 만들어줘.
테스트를 먼저 작성하고, 그 다음에 코드를 작성해줘. 그리고 테스트를 실행해서 통과할 때까지 코드를 수정해줘.
" 와 같이 요청하는 것입니다.
Cursor는 프로젝트의 package.json 등을 분석하여 적절한 테스트 파일을 생성하고, AI가 작성한 코드가 해당 테스트를 통과하는지 스스로 확인하며 코드를 개선해 나갑니다.
물론, AI가 항상 완벽한 것은 아니므로 중간중간 진행 상황을 지켜보며 필요시 "잠깐, 방향이 이상한데?" 하고 개입하는 것이 좋습니다.
이미 잘 작성된 테스트 코드가 있다면, 이를 활용하여 코드의 견고성을 더욱 높일 수 있습니다.
예를 들어, "기존 테스트에 이런 케이스들을 추가해줘. 그리고 모든 테스트를 통과하도록 코드를 수정해줘." 와 같이 요청할 수 있습니다.
실제 운영 환경에서 발생했던 오류 케이스들을 하나씩 테스트로 추가하고 AI에게 수정하도록 하면, 시간이 지날수록 코드가 점점 더 튼튼해지는 것을 경험할 수 있습니다.
AI에게 다음과 같이 요청할 수 있습니다.
"아래 TypeScript 코드에서 타입 오류를 수정해줘:"
// AI에게 수정 요청할 예시 코드function greet(person: string, date: Date): string { // 반환 타입 명시 console.log(`Hello ${person}, today is ${date.toDateString()}!`); return `Hello ${person}, today is ${date.toDateString()}!`; // 반환문 추가}// 만약 다른 곳에서 date를 string으로 전달하려고 할 때 발생하는 오류를 AI가 수정하도록 유도// const todayString = new Date().toISOString();// greet("Alice", new Date(todayString)); // AI는 Date 객체로 변환하거나, 함수 시그니처를 바꿀 수 있음
Cursor는 타입 불일치를 감지하고, 예를 들어 greet 함수 호출 시 date 파라미터가 Date 객체가 되도록 수정하거나, 함수의 매개변수 타입을 더 유연하게 변경하는 등의 제안을 할 수 있습니다.
선택한 코드 블록에 대해 빠른 변경을 지시할 때 사용합니다.
예를 들어, 특정 코드 부분을 선택하고 Command K를 누른 후 "이 함수를 async 함수로 바꿔줘" 또는 "이 변수명을 camelCase로 변경해줘" 와 같이 요청하면, AI가 해당 부분만 빠르게 수정해줍니다.
인라인 UI로 간편하게 사용할 수 있습니다.
Command I (또는 Ctrl I)
AI 에이전트 채팅창을 열고, 선택한 코드를 채팅 컨텍스트에 바로 포함시켜줍니다.
선택한 코드에 대해 더 자세한 질문을 하거나 복잡한 수정을 요청할 때 유용합니다.
Cursor의 Command K 기능은 터미널에서도 사용할 수 있습니다.
복잡한 git 명령어 등을 외울 필요 없이, "가장 최근 5개 git 브랜치 목록 보여줘" 또는 "현재 브랜치에서 main 브랜치로 rebase 해줘" 와 같이 자연어로 명령을 내릴 수 있습니다. 이를 통해 터미널 작업의 효율을 크게 높일 수 있습니다.
Cursor의 자동 완성 기능은 단순한 코드 조각 완성을 넘어, 전체 코드 라인이나 블록을 제안하기도 합니다.
회색으로 표시되는 제안을 보고 Tab 키를 눌러 수락할 수 있는데, 때로는 Tab 키가 다음 제안으로 넘어가거나 코드의 다른 부분으로 점프하는 등 약간의 적응이 필요할 수 있습니다.
꾸준히 사용하며 감을 익히는 것이 중요합니다.
Git을 사용할 때 커밋 메시지를 작성하는 것도 은근히 귀찮은 일입니다. Cursor는 이 작업도 도와줍니다.
소스 컨트롤 탭에서 마법봉 아이콘을 클릭하면, 변경된 코드를 기반으로 AI가 자동으로 커밋 메시지를 생성해줍니다. 완벽하지는 않더라도 좋은 초안이 될 수 있습니다.
Command Shift P (또는 Ctrl Shift P)를 눌러 명령 팔레트를 열고 "bug finder"를 검색하면 버그 파인더 기능을 사용할 수 있습니다.
이 기능은 현재 변경 사항을 메인 브랜치와 비교하여 잠재적인 버그를 찾아내려고 시도합니다.
예를 들어, UI 작업 시 특정 값이 0일 경우를 처리하지 않은 부분 등을 지적해 줄 수 있습니다.
오늘은 AI 기반 코드 편집기의 다양한 활용 팁에 대해 알아보았습니다.
YOLO 모드, 테스트 주도 AI 코딩, 자동 오류 수정, 로그 기반 디버깅 등 Cursor의 강력한 AI 기능들은 잘 활용한다면 개발 생산성을 크게 향상시킬 수 있는 잠재력을 가지고 있습니다.
물론 AI가 모든 것을 대신해 줄 수는 없으며, 기본적인 프로그래밍 지식과 문제 해결 능력은 여전히 개발자에게 가장 중요한 자산입니다.
Cursor와 같은 AI 도구를 현명하게 활용하여, 반복적인 작업은 AI에게 맡기고 우리는 더 창의적이고 중요한 문제 해결에 집중하는 스마트한 개발자가 되어봅시다!