# Edit

기존 파일 내에서 정확한 문자열 교체를 수행합니다. 차이점만 전송되므로 편집이 정밀하고 감사 가능하게 유지되어 파일을 수정하는 선호되는 방법입니다.

## 사용 시점

- 주변 파일을 다시 작성하지 않고 단일 함수의 버그 수정
- 구성 값, 버전 문자열, 또는 import 경로 업데이트
- `replace_all`로 파일 전체에서 심볼 이름 변경
- 앵커 근처에 블록 삽입 (`old_string`을 확장하여 주변 컨텍스트 포함 후 교체 제공)
- 다단계 리팩터링의 일환으로 작고 범위가 잘 지정된 편집 적용

## 매개변수

- `file_path` (string, 필수): 수정할 파일의 절대 경로.
- `old_string` (string, 필수): 검색할 정확한 텍스트. 공백과 들여쓰기를 포함하여 문자 단위로 일치해야 합니다.
- `new_string` (string, 필수): 교체 텍스트. `old_string`과 달라야 합니다.
- `replace_all` (boolean, 선택): `true`인 경우 `old_string`의 모든 발생을 교체합니다. 기본값은 `false`이며, 일치 항목이 고유해야 합니다.

## 예시

### 예시 1: 단일 호출 사이트 수정
`old_string`을 정확한 라인 `const port = 3000;`으로, `new_string`을 `const port = process.env.PORT ?? 3000;`으로 설정합니다. 일치가 고유하므로 `replace_all`은 기본값을 유지할 수 있습니다.

### 예시 2: 파일 전체에서 심볼 이름 변경
`api.ts`에서 모든 `getUser`를 `fetchUser`로 이름을 바꾸려면 `old_string: "getUser"`, `new_string: "fetchUser"`, `replace_all: true`로 설정합니다.

### 예시 3: 반복되는 스니펫의 모호성 제거
`return null;`이 여러 분기에서 나타나는 경우, `old_string`을 확장하여 주변 컨텍스트 (예: 앞의 `if` 라인)를 포함시켜 일치가 고유하도록 하십시오. 그렇지 않으면 도구가 추측하지 않고 오류를 반환합니다.

## 참고사항

- `Edit`가 변경을 수락하기 전에 현재 세션에서 파일에 대해 적어도 한 번 `Read`를 호출해야 합니다. `Read` 출력의 라인 번호 접두사는 파일 내용의 일부가 아닙니다. `old_string`이나 `new_string`에 포함하지 마십시오.
- 공백이 정확히 일치해야 합니다. 특히 YAML, Makefile, Python에서 탭 대 공백, 뒤쪽 공백에 주의하십시오.
- `old_string`이 고유하지 않고 `replace_all`이 `false`이면 편집이 실패합니다. 컨텍스트를 확장하거나 `replace_all`을 활성화하십시오.
- 파일이 이미 존재하는 경우 언제든 `Write`보다 `Edit`를 선호하십시오. `Write`는 전체 파일을 덮어쓰고 주의하지 않으면 관련 없는 내용을 잃습니다.
- 동일한 파일에서 여러 관련 없는 편집의 경우 하나의 큰 취약한 교체 대신 여러 `Edit` 호출을 순차적으로 실행하십시오.
- 소스 파일을 편집할 때 이모지, 마케팅 카피, 요청되지 않은 문서 블록 도입을 피하십시오.
