https://metime.tistory.com/419
Cmd K
Overview
Cmd K (windows에서는 Ctrl K)는 에디터 창에서 새로운 코드를 생성하거나 기존 코드를 편집할 수 있도록 해주는 기능
Prompt Bars
Ctrl/Cmd K를 눌렀을 때 나오는 Bar 가 Prompt Bar이다. 채팅을 위한 AI 입력 박스와 비슷하게 작동하며, 채팅을 위해 일반 택스트를 입력하거나 @ 기호를 사용하여 다른 컨텍스트를 참조할 수 있다.
Inline Generation
코드를 선택하지 않고 그냥 Ctrl/Cmd K를 누르면, 프롬프트 바에 입력한 내용에 따른 새 코드를 생성한다.
Inline Edits
기존 코드를 수정하려면, 편집하려는 코드를 선택한 후에 프롬프트 바에 입력하면 된다.
Follow-up Instructions
각 코드 생성 후, 프롬프트 바에 더 많은 지시 사항을 추가한 뒤, Enter를 눌러 AI가 후속 지시 사항에 따라 다시 코드를 생성하도록 할 수 있다.
Default Context
수동으로 @ 기호를 사용하여 추가한 정보 이외에도, 코드 생성 개선을 위해 다양한 코드를 찾는다. 이 추가 컨텍스트에는 관련 파일이나 최근에 본 파일 등도 포함될 수 있다. 이러한 항목들을 수집한 후, 편집이나 코드 생성과 관련성에 따라 순위를 매겨 상위 항목만을 대규모 언어 모델을 위한 컨텍스트로 유지한다.
Quick Question
프롬프트 바에서 Option/Alt Enter를 누르면 Cursor가 선택한 코드와 첨부한 컨텍스트에 대한 질문에 답변한다. 이 대화 내용은 후속 코드 생성에 사용될 수 있으며, Cursor의 답변 제공 후 생성해줘.(do it) 과 같은 명령을 입력하여 코드를 생성할 수 있다.
Terminal Cmd K
Cursor의 터미널에서 Ctrl/Cmd K를 누르면, 터미널 하단에 프롬프트 바가 열린다. 이 프롬프트 바에 터미널에서 실행하고자 하는 작업을 설명하면, 그에 맞는 명령어를 생성한다. Esc를 눌러 명령을 수락하거나, Ctrl/Cmd + Enter를 누르면 명령을 즉시 실행 가능하다.
기본적으로 Terminal Cmd K는 최근 터미널 기록, 사용자의 지시 사항, 그리고 프롬프트 바에 입력한 모든 내용을 컨텍스트로 인식한다.
이러면 진짜 리눅스 명령어 안 외워도 되겠다. 프롬프트 바에 간단한 지시사항 정도 내리니 바로 명령어로 치환해주네.
Context
Codebase Indexing
Index Your Codebase
@codebase 또는 Ctrl/Cmd + Enter를 사용하여 더 나은 정확도의 코드베이스 답변을 얻기 위해, 코드베이스 인덱싱을 할 수 있다. 이 과정에서 Cursor는 코드베이스의 각 파일에 대해 임베딩을 계산하고, 이를 통하여 코드베이스 답변의 정확도를 향상시킨다
코드베이스 인덱스는 코드베이스의 최신 변경 사항을 자동으로 동기화한다.
코드베이스 인덱싱 상태는 Cursor Settings > Features > Codebase Indexing 에서 확인 가능하다.
Advanced Settings
기본적으로 Cursor는 코드베이스 내 모든 파일을 인덱싱한다.
설정 표시 섹션을 확장하면 더 많은 고급 옵션을 확인할 수 있다. 여기서 새로운 저장소에 대한 자동 인덱싱을 활성화 할지의 여부를 결정하고, 저장소 인덱싱 시 Cursor가 무시할 파일들을 .gitignore 설정 외애도 구성이 가능하다.
프로젝트 내 AI가 읽을 필요가 없는 대용량 파일이 있는 경우 해당 파일들을 무시하면 답변의 정확도를 향상시킬 수 있다.
Rules for AI
Cursor Settings > General > Rules for AI 에서 AI를 위한 사용자 정의 지침 추가가 가능하다.
이 지침은 Cursor Chat 및 Ctrl/Cmd + K의 기능에 표함된다.
.cursorrules
각 프로젝트 지침을 위해, 프로젝트 루트 디렉터리에 .cursorrules파일을 포함할 수 잇다.
이 파일에 포함된 지침은 Rules for AI 섹션과 동일하게 Cursor Chat 및 Ctrl/Cmd + K 기능에 적용된다.
Basic Usage
AI 입력 상자(Cmd K, Chat, Terminal Cmd K 등)에서 @ 기호를 사용하면 팝업 메뉴가 나타나며, 입력한 내용에 따라 가장 관련성이 높은 제안이 자동으로 필터링되어 표시된다.
Keyboard Shortcuts
위/아래 화살표 키를 사용해 제안 목록을 탐색할 수 있으며, Enter 키를 눌러 제안을 선택할 수 있다. 제안이 카테고리(예: 파일)인 경우, 그 카테고리 내에서 가장 관련성 높은 항목만 필터링되어 표시된다.
Cmd K Keyboard Shortcut
Cmd K @ 기호로 선택된 목록을 탐색할 때 위/아래 화살표 키를 사용할 수 있으며, Enter를 눌러 선택한 컨텍스트 항목을 확장/축소할 수 있다. 파일 참조의 경우 Ctrl/Cmd M을 사용하여 파일 읽기 전략을 전환할 수 있다. 파일 일기 전략에 대한 자세한 내용은 @Files에서 추후 설명할 예정이다.
@Files
cursor chat 및 Cmd K와 같은 AI 입력 상자에서 @Files를 사용하여 전체 파일을 참조할 수 있다. 또한 @ 입력 후 파일 이름의 일부를 입력하면, @Code 관련 파일 검색 결과를 볼 수 있다.
파일이 올바른지 확인할 수 있도록 @Files 입력 시 파일 경로 미리보기가 제공된다. 동일한 이름을 가진 파일이 여러 폴더에 있을 때 찾기에 유용하다.
Chat Long File References
Chat 내용이 너무 길 경우, 파일을 작은 조각으로 나누고 질문의 관련성에 따라 우선순위를 다시 매기는 방식으로 진행된다.
Cmd K Chucking Strategy
Cmd K에서는 파일 길이에 따라 참조 방법이 다르게 작동한다.
- auto: 파일 크기에 따라 세 가지 읽기 전략 중 하나를 자동으로 선택한다.
- full file: 파일 전체가 컨텍스트로 사용된다.
- outline: cursor가 파일 개요를 분석하고, 분석한 내용을 컨텍스트로 사용한다.
- chunks: 파일을 작은 조각으로 나누고 가장 관련성이 높은 부분을 선택한다.
Drag and Drop
파일을 Chat이나 Cmd K에 컨텍스트로 추가하려면 기본 사이드바에서 파일을 드래그 할 수 있다.
@Folders
info. 현재 @Folders 기능은 cursor chat 기능에서만 제공됨 (작성일 기준)
cursor에서는 전체 폴더를 참조하여 컨텍스트로 사용할 수도 있다. @Folders는 많은 양의 컨텍스트를 AI에게 제공해야 하는 긴 대화에서 더욱 유용하다.
@Code
특정 코드 섹션을 참조하기위해 @Code 심볼을 사용할 수 있다.
Code Preview
@Files 심볼과 동일하게, 참조하려는 코드가 올바른지 확인할 수 있도록 코드 내용을 미리 보여준다.
From the Editor
또 다른 방법으로 참조할 코드를 선택한 후, "Add to Chat" (Ctrl/Cmd L) 또는 "Add to Edit" (Ctrl/Cmd Shift K) 버튼을 클릭한다.
이렇게 하면 선택한 코드 스니펫이 채팅 입력 상자 또는 현재 활성화된 Cmd K 입력창에 추가된다.
새로운 채팅에 선택한 코드를 추가하려면 Ctrl/Cmd L 을 누른다.
@Docs
Cursor에는 서드파티 문서(특정 소프트웨어나 플랫폼에서 제공한 공식 문서가 아닌, 외부에서 작성된 문서)들이 크롤링되고 인덱싱되어 컨텍스트로 사용될 수 있다. @Docs 심볼을 사용하여 이런 문서들에 접근할 수 있다.
Add Custom Docs
제공되지 않은 사용자 지정 문서를 크롤링하고 인덱싱하고 싶다면 @Docs > Add new doc 으로 이동하여 추가한다. 원하는 문서의 URL을 붙여 넣으면 된다.
cursor가 문서를 인덱싱하고 학습한 후, 다른 문서처럼 해당 문서를 컨텍스트로 사용할 수 있게 한다.
Manage Custom Docs
Settings > Features > Docs 에서 추가한 문서를 볼 수 있다. 여기서 문서를 편집, 삭제 또는 새 문서를 추가할 수 있다.
@Git
info. 현재 @Git은 Cursor Chat에서만 지원된다.(작성일 기준)
Cursor Chat에서 @Git을 사용하면 Git 커밋, diff(차이점) 또는 풀 리퀘스트(pull requests)를 프롬프트에 추가할 수 있다.
Common Use Cases
@Git의 일반적인 사용 사례 중 하나는 Cursor AI가 diff를 스캔하여 해당 diff로 인해 발생할 수 있는 버그나 문제를 찾아내는 것이다.
또한 현재 diff를 기반으로 커밋 메시지를 생성하려면 @Diff of Working State를 사용할 수도 있다.
@Codebase
Cursor Chat에서 @Codebase를 사용하면, 아래와 같은 단계를 거쳐 중요한 코드 조각을 찾아낸다.
- Gathering(수집): 코드베이스를 스캔하여 중요한 파일이나 코드 청크를 찾는다.
- Reranking(재정렬): 질문과의 관련성을 기준으로 컨텍스트 항목을 다시 정렬한다.
- Reasoning(추론): 컨텍스트를 어떻게 사용할지 계획을 세운다.
- Generating(생성): 응답을 생성한다.
고급 코드베이스 질문을 제출하는 또 다른 방법은 Ctrl/Cmd + Enter 버튼 옆의 드롭다운을 클릭 후, 검색 동작에 대해 reranker을 선택하는 것이다. 이 기능은 @Codebase가 사용되지 않은 경우에만 가능하며, @Codebase가 사용된 경우에는 @Codebase가 우선 적용된다.
@Web
@Web을 사용하면 질문과 컨텍스트를 바탕으로 검색 쿼리를 작성하여 웹에서 관련 정보를 찾아 추가적인 컨텍스트로 제공한다. 이는 최신 정보를 찾는 데 특히 유용하다.
Always On
Settings > Features > Chat 에서 "Always On" 옵션을 켜면, 모든 질문에서 웹을 검색하도록 설정할 수 있다. 이는 모든 질문에서 @Web 기능을 사용하는 것과 같다.
@Chat
Cmd K 안에서 @Chat을 사용하여 현재의 채팅 메시지를 컨텍스트로 추가할 수 있다. 이는 AI와 나눈 대화를 코드 편집이나 생성에 적용하고자 할 때 유용하다.
@Definitions
info. 이 기능은 현재 Cmd K 에서만 사용 가능하다.
@Definition 을 사용하면 주변의 모든 정의를 Cmd K에 컨텍스트로 추가할 수 있다.
Paste Links
@https://your-link.com
cursor가 응답하기 전에 링크를 방문하도록 하려면 @를 입력 후 링크를 넣으면 된다.
Remove Links
기본적으로 Cursor Chat 에서는 링크를 자동으로 @Links 로 변환한다. 링크를 일반 텍스트로 유지하고 싶다면, 링크 클릭 후 Unlink 를 선택하면 된다.
Ignore Files
코드베이스 인덱싱 같은 기능에서 파일을 무시하려면, 프로젝트 루트 디렉토리에 .cursorignore 파일을 사용할 수 있다. 이 파일은 Git에서 사용하는 .gitignore 와 동일한 방식으로 작동한다.
.cursorignore 는 .gitignore 파일을 우선 따른다. 이미 .gitignore 파일이 있으면 해당 파일들은 기본적으로 무시된다. 추가로 무시할 파일이 있으면 .cursorignore 파일에 추가할 수 있다.
.cursorignore 파일 예시
특정 파일 무시
# 'dist' 디렉토리 내의 모든 파일 무시
dist/
# 모든 '.log' 파일 무시
*.log
# 특정 파일 'config.json' 무시
config.json
특정 파일만 포함
app 디렉토리 내에서 .py 파일만 포함하기. .gitignore 와 동일한 구문을 사용한다.
# 모든 파일 무시
*
# 'app' 디렉토리는 무시하지 않음
!app/
# 'app' 내의 하위 디렉토리도 무시하지 않음
!app/*/
!app/**/*/
# Python 파일은 무시하지 않음
!*.py
Troubleshooting
무시 파일 구문은 때떄로 혼란을 주기도 한다. .cursorignore 파일은 .gitignore 와 동일한 구문을 따르기 떄문에, 무시한 파일이 기대한 대로 작동하지 않으면, Google에서 'cursorignore'을 'gitignore'로 바꿔 검색하는 것을 권장한다. 대부분 비슷한 문제가 있었을 가능성이 높으며, StackOveflow에서 좋은 해결책을 찾을 수 있을 것이다.
일반적인 예시: 모든 파일을 무시하되, .php 확장자를 가진 파일만 포함하려면, *를 추가한 후 !*.php 만으로는 작동하지 않는다. Gitignore 파일 탐색기가 하위 디렉토리로 내려가서 .php 파일을 발견하지 않기 때문이다.
Advanced
Models
CurChat, Ctrl/Cmd K, Terminal Ctrl/Cmd K를 통해 쉽게 원하는 모델로 전환이 가능하다.
Model Dropdown
AI 입력 상자 아래에 드롭다운이 있으며, 이 드롭다운을 통해 사용하고 싶은 모델을 선택할 수 있다. 기본적으로 아래 모델들을 사용할 수 있다.
- GPT-4o
- GPT-4
- Claude 3.5 Sonnet
- cursor-small: Cursor의 커스텀 모델로, GPT-4만큼 똑똑하지 않지만 빠르며 무제한 사용 가능하다.
추가 모델은 Settings > Models < Model Names 에서 추가가 가능하다.
Long Context Only Models
긴 컨텍스트 대화에서는 긴 컨텍스트를 지원하는 모델만 선택할 수 있다.
- gpt-4o-128k
- gemini-1.5-flash-500k
- claude-3-haiku-200k
- claude-3-sonnet-200k
- claude-3-5-sonnet-200k
What context window is used for model X?
채팅에서는 현재 약 20,000토큰으로 제한된다(모델이 이 정도 컨텍스트를 지원하지 않는 경우 그보다 더 적을 수 있음). cmd-K에서는 TTFT(Time To First Token)와 품질의 균형을 맞추기 위해 약 10,000 토큰으로 제한된다. 긴 컨텍스트 대화에서는 해당 모델의 최대 컨텍스트 창을 사용한다.
Custom API Keys
OpenAI API Keys
cursor에서는 직접 OpenAI API 키를 입력하여 원하는 만큼 AI 메시지를 보낼 수 있으며, 이에 대한 비용은 사용자 부담이다.
본인 API키는 아래 링크에서 찾을 수 있다.
https://platform.openai.com/api-keys
직접 API 키를 사용하려면 Settings > Models > OpenAI API Key로 이동하여 API 키를 입력한 후 Verify 버튼을 클릭한다. 그렇게 키가 검증되면 OpenAI API 키 사용이 활성화된다.
Anthropic API Keys
OpenAI 와 마찬가지로, Anthropic API 키도 설정할 수 있으며, 이를 통해 Claude 기반 모델을 본인 부담으로 사용할 수 있다.
Google API Keys
Google API 키를 설정하면 Google 모델(gemini-1.5-flash-500k 등)을 본인 부담으로 사용할 수 있다.
Azure Integration
마지막으로 Azure API 키를 설정하면 Azure OpenAI 모델을 본인 부담으로 사용할 수 있다.
Will my API key be strored or leave my device?
API 키는 저장되지 않으며, 모든 요청과 함께 서버로 전송된다. 모든 요청은 백엔드를 통해 처리되는데, 그 곳에서 최종 프롬프트 빌딩이 이루어지기 때문이다.
AI Review (Beta)
AI 리뷰는 코드베이스에서 최근 변경 사항을 검토하여 잠재적인 버그를 찾아낼 수 있는 기능이다.
개별 리뷰 항목을 클릭하면 편집기에서 전체 컨텍스트를 확인할 수 있으며, AI와 대화하여 추가 정보를 얻을 수 있다.
Custom Review Instructions
AI 리뷰를 보다 효과적으로 활용하기 위해, AI가 집중해야 할 사항에 대한 사용자 지정 지침을 제공할 수 있다.
예를 들어, 성능 관련 문제에 집중하고 싶다면,
내 코드 성능에 집중해줘.
와 같은 지침을 제공할 수 있다. 이렇게 하면 AI 리뷰가 코드 변경 사항을 스캔할 때 성능에 중점을 두개 된다.
Review Options
현재 선택할 수 있는 여러 리뷰 옵션이 있다.
- 작업 상태 리뷰: 커밋되지 않은 변경 사항을 리뷰
- 메인 브랜치와의 Diff 리뷰: 현재 작업 상태와 메인 브랜치 간의 차이점 리뷰
- 마지막 커밋 리뷰: 마지막으로 한 커밋 리뷰
Shadow Workspace
섀도우 워크스페이스는 AI가 생성한 코드의 품질을 향상시키기 위해 설정할 수 있는 선택 기능이다. 일부 기능만 이 설정을 사용한다.
섀도우 워크스페이스를 활성화하면, 백그라운드에서 동작하는 AI가 작성한 코드에 대해 린트(lint)를 요청할 수 있다. 이때 로컬 컴퓨터에 숨겨진 창이 생성되며, 이는 코딩 경험에 영향을 주지 않도록 설계되었다.
섀도우 워크스페이스는 cursor의 메모리 사용량을 증가시킬 수 있으므로, RAM이 충분한 경우에만 이 기능을 활성화 하는 것을 권장한다.
섀도우 워크스페이스에 대한 자세한 사항은 관련 블로그 게시물에서 확인 가능하다.
https://www.cursor.com/blog/shadow-workspace
(섀도우 워크스페이스는 문서를 보면서도 잘 이해가 되지 않는다. 직접 써봐야 알듯)
Privacy FAQ
What is Privacy Mode?
개인정보 보호 모드를 활성화하면, 사용자의 코드가 cursor 나 제3자에 의해 저장되지 않는다. 활성화 하지 않는다면, cursor를 개선하기 위해 프롬프트, 코드 스니펫, 텔레메트리 데이터가 수집될 수 있다. 개인정보 보호 모드에 대해 더 자세히 알고싶다면 아래 링크에서 확인 가능하다.
https://www.cursor.com/privacy
개인정보 보호 모드는 온보딩 중 또는 Settings > General > Privacy Mode에서 활성화 할 수 있다.
Are requests always routed through the Cursor backend?
API 키를 사용하더라도 요청은 계속 cursor의 백엔드를 통해 전달된다. 그곳에서 최종 프롬프트 빌딩이 이루어지기 때문이다.
Does indexing the codebase require storing code?
코드베이스를 인덱싱하기 위해 코드를 꼭 저장하지 않아도 된다. 코드베이스를 인덱싱하도록 선택한 경우, 코드베이스를 작은 청크로 나누어 서버에 업로드하여 임베딩을 계산하지만, 요청이 완료되면 모든 일반 텍스트 코드가 사라진다.
임베딩과 코드베이스에 대한 메타데이터(해시값, 난독화된 파일 이름)는 cursor의 데이터베이스에 저장되지만, 코드 자체는 저장되지 않는다.
아래 페이지에서 더 자세히 확인 가능하다.
https://www.cursor.com/security
Troubleshooting
Common Issues
변경 로그에서 업데이트를 확인했지만 Cursor가 업데이트되지 않아요.업데이트가 매우 최근에 출시된 경우, 아직 사용자에게 배포되지 않았을 수 있습니다. Cursor는 단계적 배포를 진행하는데, 먼저 무작위로 선택된 일부 사용자에게 업데이트를 배포한 후 점차 모든 사용자에게 확장됩니다. 모든 사용자에게 도달하는 데는 일반적으로 약 5시간이 걸리며, 더 큰 업데이트의 경우 시간이 더 걸릴 수 있습니다.Cursor에서 GitHub 로그인에 문제가 있어요 / GitHub에서 로그아웃하려면 어떻게 해야 하나요?명령 팔레트에서 "Sign Out of GitHub" 명령어(Ctrl/⌘ + Shift + P)를 사용해보세요.GitHub Codespaces를 사용할 수 없어요.아쉽게도, 아직 GitHub Codespaces는 지원되지 않습니다.Remote SSH 연결에 문제가 있어요.현재 Mac이나 Windows 머신에 SSH로 접속하는 것은 지원되지 않습니다. Mac이나 Windows 머신을 사용하고 있지 않은 경우, 포럼에 문제를 보고해 주세요. 로그를 포함하면 더 나은 도움을 받을 수 있습니다.회사 프록시 뒤에서 Cursor Tab과 Cmd K가 작동하지 않아요.Cursor Tab과 Cmd K는 기본적으로 HTTP/2를 사용하여 자원을 적게 소비하고 지연 시간을 줄입니다. 일부 회사 프록시(예: 특정 설정의 Zscaler)는 HTTP/2를 차단합니다. 이를 해결하려면 설정(Cmd/Ctrl + ,)에서 "cursor.general.disableHttp2": true를 설정하세요. 그런 다음 http2를 검색하세요.Pro에 가입했는데 앱에서 여전히 무료 플랜이에요.Cursor 설정 팝업에서 로그아웃한 후 다시 로그인해보세요.사용량이 언제 다시 초기화되나요?Pro에 가입한 경우 대시보드에서 "Manage Subscription"을 클릭하면 플랜 갱신 날짜가 상단에 표시됩니다.무료 사용자라면 받은 첫 번째 이메일의 날짜를 확인하세요. 매달 그 날짜를 기준으로 사용량이 초기화됩니다. Cursor를 어떻게 삭제하나요?Cursor 삭제 방법은 이 가이드를 참고하세요. 가이드의 "VS Code" 또는 "Code"를 "Cursor"로, ".vscode"를 ".cursor"로 변경하여 따라 하시면 됩니다. |
Troubleshooting Guide
다음은 Cursor에서 대부분의 문제 해결 시 도움이 되는 정보 목록입니다:
5. 개발자 도구 콘솔 오류 개발자 도구를 열려면: Cursor > Help > Toggle Developer Tools 을 클릭한 후, Console(콘솔) 탭을 선택하고 관련 오류가 있는지 확인하세요. 6. 로그 Windows에서 로그 파일은 다음 경로에서 찾을 수 있습니다: C:\Users\<your-user-name>\AppData\Roaming\Cursor\logs 이 폴더는 다음 명령을 실행할 때 열리는 폴더의 상위 폴더입니다: Ctrl + Shift + P (Cursor에서 명령 팔레트를 엽니다) "Developer: Open Logs Folder"를 입력하고 선택합니다. 또한, 로그는 Cursor > 터미널 > 출력에서도 확인할 수 있으며, 드롭다운에서 "Window" 또는 "Cursor Tab", "Cursor Indexing & Retrieval"과 같은 Cursor 전용 옵션을 선택할 수 있습니다. |
여기까지.
내 pc에 직접 설치해보아야겠다.
'혼자 공부하기 > 개발 스터디' 카테고리의 다른 글
[Cursor AI] Cursor 다운로드 및 설치하기 (0) | 2024.10.26 |
---|---|
[Cursor AI] Cursor AI 시작하기 - 홈페이지 둘러보기(Docs: Get Started, Tab, Chat) (2) | 2024.10.03 |
[Cursor AI] Cursor AI 시작하기 - 홈페이지 둘러보기(Features) (0) | 2024.09.28 |
[Cursor AI] Cursor AI 시작하기 - Intro. (0) | 2024.09.28 |
처음 해보는 부하 테스트(nGrinder) - (4) (0) | 2024.09.26 |