multi_edit
Perform multiple find-and-replace edits on a single file in one operation, ensuring atomicity and sequential application of changes for efficient file modifications.
Instructions
This is a tool for making multiple edits to a single file in one operation. It is built on top of the Edit tool and allows you to perform multiple find-and-replace operations efficiently. Prefer this tool over the Edit tool when you need to make multiple edits to the same file.
Before using this tool:
- Use the Read tool to understand the file's contents and context
- Verify the directory path is correct
To make multiple file edits, provide the following:
- file_path: The absolute path to the file to modify (must be absolute, not relative)
- edits: An array of edit operations to perform, where each edit contains:
- old_string: The text to replace (must match the file contents exactly, including all whitespace and indentation)
- new_string: The edited text to replace the old_string
- expected_replacements: The number of replacements you expect to make. Defaults to 1 if not specified.
IMPORTANT:
- All edits are applied in sequence, in the order they are provided
- Each edit operates on the result of the previous edit
- All edits must be valid for the operation to succeed - if any edit fails, none will be applied
- This tool is ideal when you need to make several changes to different parts of the same file
- For Jupyter notebooks (.ipynb files), use the NotebookEdit instead
CRITICAL REQUIREMENTS:
- All edits follow the same requirements as the single Edit tool
- The edits are atomic - either all succeed or none are applied
- Plan your edits carefully to avoid conflicts between sequential operations
WARNING:
- The tool will fail if edits.old_string matches multiple locations and edits.expected_replacements isn't specified
- The tool will fail if the number of matches doesn't equal edits.expected_replacements when it's specified
- The tool will fail if edits.old_string doesn't match the file contents exactly (including whitespace)
- The tool will fail if edits.old_string and edits.new_string are the same
- Since edits are applied in sequence, ensure that earlier edits don't affect the text that later edits are trying to find
When making edits:
- Ensure all edits result in idiomatic, correct code
- Do not leave the code in a broken state
- Always use absolute file paths (starting with /)
If you want to create a new file, use:
- A new file path, including dir name if needed
- First edit: empty old_string and the new file's contents as new_string
- Subsequent edits: normal edit operations on the created content
Input Schema
Name | Required | Description | Default |
---|---|---|---|
edits | Yes | Array of edit operations to perform sequentially on the file | |
file_path | Yes | The absolute path to the file to modify (must be absolute, not relative) |