# Cursor를 사용한 코드 작성 방법

> Clean Markdown view of GeekNews topic #17488. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17488](https://news.hada.io/topic?id=17488)
- GeekNews Markdown: [https://news.hada.io/topic/17488.md](https://news.hada.io/topic/17488.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-10-30T09:47:23+09:00
- Updated: 2024-10-30T09:47:23+09:00
- Original source: [arguingwithalgorithms.com](https://www.arguingwithalgorithms.com/posts/cursor-review.html)
- Points: 23
- Comments: 6

## Summary

요즘 인기 최고인 AI기반 개발 IDE Cursor는 Visual Studio Code의 포크로, Large Language Model 기반 기능을 통합하여 코드 작성과 리팩터링을 지원하는 강력한 도구입니다. 코드 자동 완성, 인라인 편집, 채팅 사이드바 등 다양한 기능을 제공하여 코드 작성 방식을 혁신적으로 변화시킬 수 있습니다.

## Topic Body

### Cursor란 무엇인가  
- Cursor는 Visual Studio Code(VS Code)의 포크로, 코어 UI에 Large Language Model (LLM) 기반 기능이 통합되어 있음  
- 독점 제품이며 무료 계층과 구독 옵션이 있음  
- 주요 기능:  
  - Tab 자동 완성: 구독자에게만 제공되는 코드 자동 완성 및 다음 추천 동작으로 이동하는 독점 미세 조정 모델  
  - 인라인 편집: 무료 및 유료 사용자가 사용할 수 있는 채팅 기반 인터페이스로 diff 뷰를 사용해 선택한 코드 편집  
  - 채팅 사이드바: 무료 및 유료 사용자가 사용할 수 있는 채팅 기반 인터페이스로, 더 긴 토론을 위한 공간 제공  
  - Composer: 여러 파일에 걸친 대규모 리팩터링을 위해 설계된 채팅 기반 인터페이스로, 무료 및 유료 사용자가 사용 가능  
  
### Tab 자동 완성  
- 코드 작성 시 가장 자연스럽게 사용할 수 있고 시간을 가장 많이 절약할 수 있는 기능  
- 한 줄, 여러 줄 또는 전체 함수에 대한 완성을 제안할 뿐만 아니라 다음 편집을 위해 이동할 다음 줄도 제안  
- Tab 키를 반복적으로 눌러 파일 전체에서 관련 변경 사항을 자동 완성할 수 있음  
- 코드 리팩터링 도구로 사용 가능  
- 때로는 독립적으로 버그를 찾아 수정을 제안하기도 함  
- 문자열을 따옴표로 묶으면 내용을 적절히 이스케이프함  
- 함수 시그니처와 선택적 docstring만으로 전체 함수를 작성할 수 있음  
- 완성 제안이 매우 빠름  
- 단점:  
  - 제안을 제때 보지 못하고 계속 입력하면 완성 제안이 사라짐  
  - 잘못된 완성을 의도적으로 거부했는데, 나중에 다른 완성을 수락하면 이전에 거부한 제안이 조용히 적용되는 경우가 있음  
  
### 인라인 편집, 채팅 사이드바, Composer  
- 기반 모델(주로 Claude 3.5 Sonnet 사용)과의 상호 작용은 매우 유사하며, 사용자 인터페이스에서 차이가 있음  
- 인라인 편집은 Ctrl-K/Cmd-K를 눌러 호출하고, 원하는 변경 사항을 입력한 후 수락하거나 거부할 수 있는 diff를 얻을 수 있음  
- 채팅 사이드바는 Ctrl+L/Cmd+L로 열고, 여러 번 대화할 수 있는 더 많은 공간을 제공함  
- Composer는 여러 파일에 걸친 리팩터링을 위해 설계되었으며, 한 번에 하나씩 여러 파일 diff를 검토할 수 있는 더 나은 사용자 경험을 제공함  
  
### .cursorrules 파일   
- 작업 공간 루트에 위치한 .cursorrules 파일의 내용은 항상 추가 컨텍스트를 제공하기 위해 다양한 채팅 양식에 포함됨  
- 저장소의 코딩 표준, 공통 패키지 및 기타 문서를 LLM에 알리는 데 사용  
- Cursor의 큰 장애물 중 하나인 편집 중인 파일에 이미 존재하지 않는 한 코딩 스타일과 패턴을 따르지 않는 문제를 해결하는 데 도움이 될 수 있음  
- 현재 작업 공간당 하나의 파일만 있어서 여러 언어로 코드를 포함하는 모노레포는 작고 일관되게 스타일이 지정된 코드 세트를 가진 작은 저장소보다 설정하기 어려움  
- .cursorrules 파일은 채팅 양식에만 사용되며 탭 자동 완성에는 사용되지 않음  
  
### 워크플로우의 변화  
- 코드를 더 빠르게 작성할 수 있다는 것이 가장 흥미로운 점은 아님  
- 실제로 코드 작성 자체가 병목 현상은 아님  
- 진정한 가치는 코드 작성 방식을 변경하는 데 있음  
- 변경된 사항:  
  1. 새로운 라이브러리나 프레임워크를 찾을 가능성이 훨씬 줄어듦  
     - 작은 유틸리티의 경우 범용 라이브러리를 가져오는 것보다 LLM이 맞춤형 요구 사항에 맞게 작성하도록 하는 것이 더 쉬움  
     - 많은 라이브러리는 상용구를 줄이기 위해서만 존재하는데, LLM이 대신 해줄 수 있으므로 비용이 그만큼 가치가 있는 것 같지 않음  
  2. 자체 코드에서 DRY(Don't Repeat Yourself) 원칙을 고수하는 것에 대해 덜 걱정함  
     - 조기에 추상화를 정의하면 나중에 많은 기술 부채가 생길 수 있음  
     - 함수나 클래스로 만들려고 하지 않고 다른 코드를 참조하여 많은 코드를 만들 수 있으므로 유연성이 더 높아짐  
  3. 덜 익숙한 언어나 프레임워크를 사용할 의향이 훨씬 높아짐  
     - 예를 들어 R을 사용하는 데 어려움이 있었지만, 이제는 원하는 시각화를 설명하면 올바른 데이터 조작과 ggplot 시각화를 얻을 수 있음  
  4. 더 큰 코드베이스에 통합하기 전에 작은 구성 요소를 빠르게 반복하고 있음  
     - LLM의 한계를 해결하기 위한 것이기도 하지만, 이전에는 고려하지 않았던 흥미로운 작업 방식도 열어줌  
  
### 요약  
- 현재로서는 Cursor가 LLM 코딩 어시스턴트의 잠재력을 보여주는 가장 좋은 예  
- 이러한 유형의 도구가 어떻게 가치가 있을지 탐색하고 싶다면 Cursor를 사용해 보는 것이 좋음  
  
### GN⁺의 의견  
- Cursor는 LLM 기반 코딩 도구의 잠재력을 보여주는 좋은 사례로 보임  
  - 특히 탭 자동 완성 기능은 코드 작성 시 자연스럽게 사용할 수 있고 시간을 많이 절약할 수 있어 매력적  
  - 채팅 기반 기능들도 리팩터링이나 코드 변환 등에 유용하게 사용될 수 있을 것 같음   
- 다만 아직 초기 단계인 만큼 한계점도 있어 보임  
  - 일관된 코딩 스타일 적용이 어렵다는 점  
  - 모노레포 등 복잡한 프로젝트 구조에서의 사용성 문제  
  - 무료 사용자와 유료 사용자 간 기능 차이가 명확하지 않은 점 등  
- 유사한 기능을 제공하는 다른 도구로는 GitHub Copilot, Tabnine, Kite 등이 있음  
  - 각 도구마다 장단점이 있으므로 프로젝트 특성이나 개인 선호도에 따라 선택하면 좋을 듯  
- LLM 기반 코딩 도구 도입 시에는 다음과 같은 사항들을 고려해 볼 만함  
  - 개발팀의 수용성: 새로운 도구 도입에 대한 거부감은 없는지  
  - 학습 비용: 도구 사용법을 익히는 데 얼마나 시간이 걸릴지  
  - 유지보수성: 도구로 생성한 코드를 이해하고 유지보수하기 쉬운지  
  - 코드 품질: 실제로 코드 품질 향상에 도움이 되는지  
  - 비용 대비 효과: 생산성 향상 효과가 도입/유지 비용을 상쇄할 만한지

## Comments



### Comment 31016

- Author: yangeok
- Created: 2024-11-08T08:27:05+09:00
- Points: 1

cursor chat이 키입니다. docstring 만들어주는게 되게 편하드라구요

### Comment 30703

- Author: roxie
- Created: 2024-11-04T11:28:29+09:00
- Points: 1

cursor 를 써보니 copilot 의 자동 완성이 너무 느리게 느껴집니다. ㅠㅠ

### Comment 30581

- Author: yangeok
- Created: 2024-10-30T18:47:48+09:00
- Points: 1

탭 자동왼성은 유료 결제자만 가능한가여?

### Comment 30591

- Author: angelkum
- Created: 2024-10-31T08:36:07+09:00
- Points: 1
- Parent comment: 30581
- Depth: 1

구독자만 가능한 것은 맞는데, 무료 구독이 있고, 한달에 2000번 자동완성을 제공합니다. 제가 그렇게 3개월 사용중입니다.   
https://www.cursor.com/pricing

### Comment 30590

- Author: savvykang
- Created: 2024-10-31T07:38:47+09:00
- Points: 2
- Parent comment: 30581
- Depth: 1

> Tab 자동 완성: 구독자에게만 제공되는 코드 자동 완성  
  
네

### Comment 30589

- Author: rlahfl
- Created: 2024-10-31T07:13:06+09:00
- Points: 1
- Parent comment: 30581
- Depth: 1

글에 적혀 있어요ㅋㅋ
