📝 Write: Criacao e Sobrescrita
Write cria um novo arquivo ou sobrescreve completamente um existente. E a escolha certa quando voce precisa criar algo do zero ou substituir todo o conteudo.
📋 Parametros do Write
| Parametro | Tipo | Descricao |
|---|---|---|
| file_path | string | Caminho absoluto do arquivo a criar/sobrescrever |
| content | string | Conteudo completo a escrever no arquivo |
Quando Usar Write
- • Criar arquivos novos (componentes, modulos, configs)
- • Substituir completamente arquivos pequenos
- • Gerar arquivos de configuracao (.json, .yaml, .toml)
- • Criar scripts de automacao
⚠️ Atencao
Write sobrescreve o arquivo existente sem perguntar. Se voce precisa modificar apenas parte de um arquivo, use Edit para evitar perder codigo.
🔧 Edit: Modificacao Precisa
Edit faz substituicoes exatas de strings dentro de arquivos. E a ferramenta ideal para modificar trechos especificos mantendo o resto intacto.
📋 Parametros do Edit
| Parametro | Tipo | Descricao |
|---|---|---|
| file_path | string | Caminho absoluto do arquivo |
| old_string | string | Texto exato a ser substituido |
| new_string | string | Novo texto (deve ser diferente) |
| replace_all | boolean | Substituir todas ocorrencias (default: false) |
Exemplo Pratico
# Renomear uma funcao
Edit( file_path="/projeto/src/utils.py", old_string="def calcular_total(", new_string="def calcular_subtotal(" )
# Substituir todas ocorrencias de uma variavel
Edit( file_path="/projeto/src/main.py", old_string="old_name", new_string="new_name", replace_all=true )
⚖️ Write vs Edit: Quando Usar Cada Um
Escolher entre Write e Edit depende do escopo da mudanca e do estado atual do arquivo.
📝 Use Write quando...
- ✓ O arquivo nao existe ainda
- ✓ Precisa substituir todo o conteudo
- ✓ Arquivo e pequeno (< 50 linhas)
- ✓ Gerando configs ou templates
🔧 Use Edit quando...
- ✓ Modificando parte de um arquivo
- ✓ Arquivo e grande (manter contexto)
- ✓ Renomeando variaveis/funcoes
- ✓ Corrigindo bugs especificos
💡 Regra de Ouro
Prefira Edit sobre Write para arquivos existentes. Edit e mais seguro porque so muda o que voce especifica, enquanto Write pode acidentalmente apagar codigo importante.
🎯 O Problema da Unicidade
Edit exige que old_string seja unico no arquivo. Se a string aparecer mais de uma vez e replace_all for false, a edicao falha.
Problema: String nao unica
# FALHA - "return" aparece varias vezes
Edit(old_string="return", new_string="return result")
Erro: old_string nao e unico no arquivo
Solucao: Incluir mais contexto
# SUCESSO - contexto adicional torna unico
Edit( old_string="def process_data():\n return", new_string="def process_data():\n return result" )
Inclua linhas anteriores/posteriores para unicidade
🔄 Alternativa: replace_all
Se voce quer substituir todas as ocorrencias (como renomear uma variavel), use
replace_all: true.
Edit( file_path="/projeto/src/main.py", old_string="user_name", new_string="username", replace_all=true )
📐 Preservando Indentacao
Um dos erros mais comuns com Edit e nao preservar a indentacao correta. O texto em old_string deve corresponder exatamente ao que esta no arquivo, incluindo espacos e tabs.
✗ Errado
# Arquivo tem 4 espacos
def func(): return True
# Edit ignora indentacao
old_string="return True"
✓ Correto
# Inclui a indentacao exata
def func(): return True
# Edit preserva espacos
old_string=" return True"
💡 Dica do Read
Quando voce le um arquivo com Read, os numeros de linha sao prefixados. O conteudo real comeca apos o tab que segue o numero. Copie exatamente o que vem depois desse tab para seu old_string.
⚠️ Erros Comuns e Solucoes
Conhecer os erros mais frequentes ajuda a debugar rapidamente quando algo da errado.
1. "File not read before editing"
Voce precisa usar Read antes de Edit em arquivos existentes.
# Sempre leia primeiro
Read(file_path="/projeto/arquivo.py")
Edit(file_path="/projeto/arquivo.py", ...)
2. "old_string not found"
O texto exato nao existe no arquivo. Verifique espacos, quebras de linha.
# Use Read para ver o conteudo exato
Read(file_path="/projeto/arquivo.py", offset=X, limit=10)
3. "old_string is not unique"
O texto aparece mais de uma vez. Adicione contexto ou use replace_all.
# Adicione linhas antes/depois para unicidade
old_string="linha_anterior\ntexto_alvo\nlinha_posterior"
4. "new_string must be different"
old_string e new_string sao identicos.
# Certifique-se de que ha uma diferenca real
Verifique se o novo texto e realmente diferente do antigo
📋 Resumo do Modulo
Proximo Modulo:
2.3 - Glob e Grep: Busca Avancada no Codebase - encontre arquivos e conteudo de forma eficiente