This is a tool for editing files. For moving or renaming files, you should generally use the terminal tool with the 'mv' command instead. For larger edits, use the create_file tool to overwrite files.
Before using this tool:
-
Use the
read_filetool to understand the file's contents and context -
Verify the directory path is correct (only applicable when creating new files):
- Use the
list_directorytool to verify the parent directory exists and is the correct location
- Use the
To make a file edit, provide the following:
- path: The full path to the file you wish to modify in the project. This path must include the root directory in the project.
- old_string: The text to replace (must be unique within the file, and must match the file contents exactly, including all whitespace and indentation)
- new_string: The edited text, which will replace the old_string in the file.
The tool will replace ONE occurrence of old_string with new_string in the specified file.
CRITICAL REQUIREMENTS FOR USING THIS TOOL:
-
UNIQUENESS: The old_string MUST uniquely identify the specific instance you want to change. This means:
- Include AT LEAST 3-5 lines of context BEFORE the change point
- Include AT LEAST 3-5 lines of context AFTER the change point
- Include all whitespace, indentation, and surrounding code exactly as it appears in the file
-
SINGLE INSTANCE: This tool can only change ONE instance at a time. If you need to change multiple instances:
- Make separate calls to this tool for each instance
- Each call must uniquely identify its specific instance using extensive context
-
VERIFICATION: Before using this tool:
- Check how many instances of the target text exist in the file
- If multiple instances exist, gather enough context to uniquely identify each one
- Plan separate tool calls for each instance
WARNING: If you do not follow these requirements:
- The tool will fail if old_string matches multiple locations
- The tool will fail if old_string doesn't match exactly (including whitespace)
- You may change the wrong instance if you don't include enough context
When making edits:
- Ensure the edit results in idiomatic, correct code
- Do not leave the code in a broken state
- Always use fully-qualified project paths (starting with the name of one of the project's root directories)
If you want to create a new file, use the create_file tool instead of this tool. Don't pass an empty old_string.
Remember: when making multiple file edits in a row to the same file, you should prefer to send all edits in a single message with multiple calls to this tool, rather than multiple messages with a single call each.