Dominando a Edição Multi-Cursor no Cursor
A edição multi-cursor é uma das funcionalidades mais poderosas dos editores de código modernos, e o Cursor leva isso além combinando técnicas tradicionais com suporte de IA. Este guia cobre tudo, desde seleções básicas até edições avançadas baseadas em regex, que transformarão como você manipula código.

Por que a Edição Multi-Cursor Importa
Quando você precisa fazer a mesma alteração em várias posições, a edição multi-cursor economiza um tempo enorme comparada com buscar-substituir ou edição manual. Cenários comuns incluem:
- Renomear variárias em várias linhas
- Adicionar prefixos ou sufixos a múltiplos itens
- Converter formatos de dados (ex: JSON para interfaces TypeScript)
- Remover ou adicionar parênteses, aspas, delimitadores
- Alinhar código ou comentários
A edição multi-cursor brilha quando suas alterações são estruturalmente semelhantes mas não idênticas. Para substituições exatamente iguais, buscar-substituir ainda pode ser mais rápido.
Técnicas Básicas de Multi-Cursor
Alt+Clique (Option+Clique no macOS)
O método mais intuitivo para posicionar múltiplos cursores é manter pressionada a tecla Alt (ou Option no macOS) e clicar nas posições desejadas.
Como usar:
- Mantenha pressionada a tecla
Alt/Option - Clique em cada posição onde deseja um cursor
- Comece a digitar -- todos os cursores inserirão texto simultaneamente
// Antes: posicione cursores no início de cada linha com Alt+Clique
const user = { name: 'Alice' };
const admin = { name: 'Bob' };
const guest = { name: 'Charlie' };
// Depois de digitar 'export ' em cada cursor
export const user = { name: 'Alice' };
export const admin = { name: 'Bob' };
export const guest = { name: 'Charlie' };
Você pode posicionar até 10.000 cursores. Na prática, mais de 100 torna-se difícil de gerenciar visualmente.
Cmd+D / Ctrl+D -- Adicionar Seleção à Próxima Ocorrência
A maneira mais rápida de selecionar múltiplas ocorrências da mesma palavra ou seleção.
Fluxo de trabalho básico:
- Selecione uma palavra ou segmento de texto
- Pressione
Cmd+D(macOS) ouCtrl+D(Windows/Linux) para selecionar a próxima ocorrência - Repita para selecionar mais ocorrências
- Edite todas as seleções simultaneamente
// Selecione 'status' e pressione Cmd+D três vezes
interface Task {
status: 'pending';
status: 'active';
status: 'completed';
}
// Altere tudo para 'state'
interface Task {
state: 'pending';
state: 'active';
state: 'completed';
}
Pular uma ocorrência:
Se você selecionou acidentalmente uma ocorrência que não deseja alterar, pressione Cmd+K Cmd+D (macOS) ou Ctrl+K Ctrl+D (Windows/Linux) para pular a seleção atual e ir para a próxima.
Selecionar todas as ocorrências de uma vez:
Para selecionar todas as ocorrências da palavra atual no arquivo, pressione Cmd+Shift+L (macOS) ou Ctrl+Shift+L (Windows/Linux).
Tenha cuidado ao usar "Selecionar todas as ocorrências" em arquivos grandes. Você pode selecionar acidentalmente correspondências indesejadas em comentários ou strings.
Seleção de Coluna (Box Selection)
A seleção de coluna permite selecionar um bloco retangular de texto, colocando cursores no início de cada linha selecionada.
Seleção de Coluna com Mouse
- Windows/Linux: Segure
Shift+Alte arraste - macOS: Segure
Shift+Optione arraste
// Selecione a coluna do prefixo e substitua
old_prefix_item1 = 100
old_prefix_item2 = 200
old_prefix_item3 = 300
old_prefix_item4 = 400
// Após selecionar 'old_prefix_' em coluna e digitar 'new_'
new_item1 = 100
new_item2 = 200
new_item3 = 300
new_item4 = 400
Seleção de Coluna com Teclado
Use atalhos de teclado para posicionar múltiplos cursores:
| Atalho | Ação |
|---|---|
Cmd+Option+Down / Ctrl+Alt+Down | Adicionar cursor na linha abaixo |
Cmd+Option+Up / Ctrl+Alt+Up | Adicionar cursor na linha acima |
Cmd+Option+Shift+Down / Ctrl+Alt+Shift+Down | Expandir seleção de coluna para baixo |
Cmd+Option+Shift+Up / Ctrl+Alt+Shift+Up | Expandir seleção de coluna para cima |
A seleção de coluna é perfeita para dados tabulares, atribuições alinhadas ou qualquer código com estrutura vertical.
Técnicas Avançadas de Multi-Cursor
Buscar e Substituir com Multi-Cursor
O widget de busca suporta operações multi-cursor através de expressões regulares.
- Abra a busca com
Cmd+F/Ctrl+F - Ative o modo regex (ícone .*)
- Digite um padrão com grupos de captura
- Use
$1,$2, etc. na substituição
// Convertendo console.log para logger customizado
// Find: console\.log\((.*)\);
// Replace: logger.debug($1);
console.log('User logged in');
console.log('Data fetched');
console.log('Error occurred');
// Resultado:
logger.debug('User logged in');
logger.debug('Data fetched');
logger.debug('Error occurred');
Edição Multi-Linha com Regex
Combine regex e multi-cursor para transformações complexas:
// Convertendo propriedades de interface para propriedades de classe com valores padrão
interface Config {
timeout: number;
retries: number;
enabled: boolean;
}
// Find: (\w+): (\w+);
// Replace: public $1: $2 = defaultValues.$1;
// Resultado:
public timeout: number = defaultValues.timeout;
public retries: number = defaultValues.retries;
public enabled: boolean = defaultValues.enabled;
Criar Cursores no Final das Linhas
Selecione várias linhas e pressione Shift+Option+I (macOS) ou Shift+Alt+I (Windows/Linux) para posicionar cursores no final de cada linha selecionada.
{
"name": "project"
"version": "1.0.0"
"description": "A sample project"
}
// Selecione as linhas e pressione Shift+Option+I, depois adicione vírgulas
{
"name": "project",
"version": "1.0.0",
"description": "A sample project",
}
Referência de Atalhos Multi-Cursor
| Ação | macOS | Windows/Linux |
|---|---|---|
| Adicionar cursor no clique | Option+Clique | Alt+Clique |
| Selecionar próxima ocorrência | Cmd+D | Ctrl+D |
| Selecionar todas as ocorrências | Cmd+Shift+L | Ctrl+Shift+L |
| Pular e selecionar próxima | Cmd+K Cmd+D | Ctrl+K Ctrl+D |
| Adicionar cursor abaixo | Cmd+Option+Down | Ctrl+Alt+Down |
| Adicionar cursor acima | Cmd+Option+Up | Ctrl+Alt+Up |
| Seleção de coluna (mouse) | Shift+Option+Arraste | Shift+Alt+Arraste |
| Cursores no final da linha | Shift+Option+I | Shift+Alt+I |
| Desfazer último cursor | Cmd+U | Ctrl+U |
| Focar próximo cursor | Cmd+F6 | Ctrl+F6 |
Fluxos de Trabalho Práticos
Fluxo 1: Renomeação em Massa de Propriedades
Quando você tem um objeto e precisa renomear várias propriedades:
// Etapa 1: Use Cmd+D para posicionar cursores em cada nome de propriedade
const user = {
firstName: 'John',
firstName: 'Admin', // Oops, duplicado
firstName: 'Guest',
};
// Etapa 2: Renomeie cada um
const user = {
firstName: 'John',
lastName: 'Doe',
role: 'Admin',
};
Fluxo 2: JSON para TypeScript
Converter um snippet JSON em propriedades de interface TypeScript:
{
"id": 1,
"title": "Hello",
"completed": false
}
- Cole o JSON em um arquivo TypeScript
- Use multi-cursor para transformar cada linha:
- Selecione as chaves em coluna
- Adicione o prefixo
readonly - Mova os cursores após os valores
- Substitua pelos tipos TypeScript
readonly id: number;
readonly title: string;
readonly completed: boolean;
Fluxo 3: Adicionar Tratamento de Erros
Envolva múltiplas chamadas de API em try-catch:
// Antes
const user = await fetchUser(id);
const posts = await fetchPosts(user.id);
const comments = await fetchComments(posts[0].id);
// Após edição multi-cursor
const user = await fetchUser(id).catch(handleError);
const posts = await fetchPosts(user.id).catch(handleError);
const comments = await fetchComments(posts[0].id).catch(handleError);
Combinando Multi-Cursor com IA
Os recursos de IA do Cursor funcionam junto com a edição multi-cursor:
- Selecione múltiplas funções com multi-cursor
- Pressione
Cmd+Kpara abrir a edição inline - Digite um prompt como "Adicionar comentários JSDoc"
- O Cursor aplica a transformação em todos os blocos selecionados
// Antes
function add(a: number, b: number) { return a + b; }
function subtract(a: number, b: number) { return a - b; }
function multiply(a: number, b: number) { return a * b; }
// Após edição multi-cursor com IA
/**
* Adds two numbers
* @param a - First number
* @param b - Second number
* @returns Sum of a and b
*/
function add(a: number, b: number) { return a + b; }
/**
* Subtracts two numbers
* @param a - First number
* @param b - Second number
* @returns Difference of a and b
*/
function subtract(a: number, b: number) { return a - b; }
/**
* Multiplies two numbers
* @param a - First number
* @param b - Second number
* @returns Product of a and b
*/
function multiply(a: number, b: number) { return a * b; }
Armadilhas Comuns
| Armadilha | Solução |
|---|---|
| Cursor na posição errada | Pressione Escape e comece de novo; use Cmd+U para desfazer cursor |
| Edição acidental em comentários/strings | Use "Selecionar todas as ocorrências" seletivamente |
| Muitos cursores para acompanhar | Trabalhe em pedaços menores, 5-10 cursores por vez |
| Seleção de coluna quebrada por indentação inconsistente | Verifique consistência de tabs/espaços antes da seleção |
| Substituição regex afetando áreas indesejadas | Pré-visualize as alterações antes de aplicar |
Resumo
A edição multi-cursor do Cursor oferece precisão cirúrgica para alterações em massa:
Alt+Cliquepara posicionamento preciso de cursoresCmd+D/Ctrl+Dpara seleção de padrões repetidos- Seleção de coluna para manipulação vertical de texto
- Buscar-substituir com regex para transformações complexas
- Combinação com IA (
Cmd+K) para edição em massa inteligente
Invista tempo em dominar esses atalhos. Eles se pagam toda vez que você precisa alterar várias linhas ao mesmo tempo.
Última atualização: Julho de 2025. Os atalhos do Cursor podem variar conforme a versão e configuração.