Pular para o conteúdo principal

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.

Multi-cursor editing in Cursor

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
dica

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:

  1. Mantenha pressionada a tecla Alt / Option
  2. Clique em cada posição onde deseja um cursor
  3. 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' };
informação

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:

  1. Selecione uma palavra ou segmento de texto
  2. Pressione Cmd+D (macOS) ou Ctrl+D (Windows/Linux) para selecionar a próxima ocorrência
  3. Repita para selecionar mais ocorrências
  4. 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).

aviso

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+Alt e arraste
  • macOS: Segure Shift+Option e 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:

AtalhoAção
Cmd+Option+Down / Ctrl+Alt+DownAdicionar cursor na linha abaixo
Cmd+Option+Up / Ctrl+Alt+UpAdicionar cursor na linha acima
Cmd+Option+Shift+Down / Ctrl+Alt+Shift+DownExpandir seleção de coluna para baixo
Cmd+Option+Shift+Up / Ctrl+Alt+Shift+UpExpandir seleção de coluna para cima
dica

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.

  1. Abra a busca com Cmd+F / Ctrl+F
  2. Ative o modo regex (ícone .*)
  3. Digite um padrão com grupos de captura
  4. 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çãomacOSWindows/Linux
Adicionar cursor no cliqueOption+CliqueAlt+Clique
Selecionar próxima ocorrênciaCmd+DCtrl+D
Selecionar todas as ocorrênciasCmd+Shift+LCtrl+Shift+L
Pular e selecionar próximaCmd+K Cmd+DCtrl+K Ctrl+D
Adicionar cursor abaixoCmd+Option+DownCtrl+Alt+Down
Adicionar cursor acimaCmd+Option+UpCtrl+Alt+Up
Seleção de coluna (mouse)Shift+Option+ArrasteShift+Alt+Arraste
Cursores no final da linhaShift+Option+IShift+Alt+I
Desfazer último cursorCmd+UCtrl+U
Focar próximo cursorCmd+F6Ctrl+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
}
  1. Cole o JSON em um arquivo TypeScript
  2. 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:

  1. Selecione múltiplas funções com multi-cursor
  2. Pressione Cmd+K para abrir a edição inline
  3. Digite um prompt como "Adicionar comentários JSDoc"
  4. 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​

ArmadilhaSolução
Cursor na posição erradaPressione Escape e comece de novo; use Cmd+U para desfazer cursor
Edição acidental em comentários/stringsUse "Selecionar todas as ocorrências" seletivamente
Muitos cursores para acompanharTrabalhe em pedaços menores, 5-10 cursores por vez
Seleção de coluna quebrada por indentação inconsistenteVerifique consistência de tabs/espaços antes da seleção
Substituição regex afetando áreas indesejadasPré-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+Clique para posicionamento preciso de cursores
  • Cmd+D / Ctrl+D para 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.