Edição em Coluna no Vim: Modo de Bloco Visual e o Plugin VisIncr

A manipulação de texto estruturado frequentemente exige operações que transcendem a edição linear tradicional. A edição em coluna, ou modo de bloco, permite modificar, inserir ou excluir dados verticalmente, tratando o texto como uma matriz bidimensional. O Vim oferece suporte nativo e robusto para esse paradigma através do modo Visual Block, que pode ser ainda mais potencializado com plugins especializados.

Ativação do Modo Visual Block

No modo Normal do Vim, posicione o cursor no ponto de início da seleção e pressione Ctrl+v. A barra de status exibirá -- VISUAL BLOCK --. Utilize as teclas de movimento (como j, k, h, l ou G) para expandir a seleção retangular. Em ambientes Windows, onde Ctrl+v é frequentemente mapeado para colar, o atalho padrão costuma ser Ctrl+q.

Cenário 1: Transformação de Lista de Portas em Comandos Docker

Considere uma lista de portas de rede que precisam ser convertidas em comandos de inicialização de contêineres:

8080
8081
8082

O objetivo é transformá-las na seguinte estrutura:

docker run -d -p 9080:80 backend_svc
docker run -d -p 9081:80 backend_svc
docker run -d -p 9082:80 backend_svc

Etapa 1: Substituição de Caracteres

Para alterar o prefixo das portas de '8' para '9':

  1. Posicione o cursor sobre o primeiro dígito '8' da primeira linha.
  2. Pressione Ctrl+v para iniciar o bloco visual.
  3. Pressione G para estender a seleção até a última linha.
  4. Presssione r (replace) seguido de 9.
  5. Pressione Esc para aplicar a alteração e retornar ao modo Normal.

Etapa 2: Inserção de Prefixo

Para adicionar o comando inicial em todas as linhas:

  1. Mova o cursor para o primeiro caractere da primeira linha.
  2. Pressione Ctrl+v e depois G para selecionar a primeira coluna de todas as linhas.
  3. Pressione I (Insert maiúsculo) para entrar no modo de inserção no início do bloco.
  4. Digite docker run -d -p (incluindo o espaço final).
  5. Pressione Esc. O texto será replicado no início de todas as linhas selecionadas.

Etapa 3: Inserção de Sufixo

Para finalizar os comandos com a imagem e mapeamento:

  1. Posicione o cursor no último dígito da primeira linha.
  2. Pressione Ctrl+v e G.
  3. Pressione A (Append maiúsculo) para inserir após o bloco selecionado.
  4. Digite :80 backend_svc.
  5. Pressione Esc para confirmar a adição em todas as linhas.

Automação de Sequências com VisIncr

Embora o Vim nativo seja excelente para manipulação estática, a geração de sequências numéricas ou alfabéticas progressivas requer ferramentas adicionais. O plugin VisIncr preenche essa lacuna, permitindo a criação automática de progressões aritméticas e alfabéticas em colunas.

Para instalar via gerenciador de plugins como o vim-plug, adicione a seguinte diretiva ao seu arquivo de configuração (.vimrc ou init.vim):

call plug#begin()
Plug 'vim-scripts/VisIncr'
call plug#end()

Após a instalação, o uso é direto: selecione a coluna desejada com Ctrl+v, pressione : para abrir a linha de comando (que aparecerá como :'<,'>) e digite I seguido do incremento (ou apenas I para incremento unitário).

Cenário 2: Geração de Dados de Teste para Redis

Suponha a necesidade de popular um banco de dados Redis com chaves de sessão sequenciais e identificadores de usuário alfabéticos:

SET session:2001 "user_a"
SET session:2002 "user_b"
SET session:2003 "user_c"

Etapa 1: Preparação da Base

No modo Normal, digite a primeira linha base:

SET session:2000 "user_x"

Posicione o cursor na linha, pressione Y para copiá-la e 2p para colá-la duas vezes, resultando em três linhas idênticas.

Etapa 2: Progressão Numérica

Para gerar os IDs de sessão:

  1. Posicione o cursor no dígito '0' (de 2000) da primeira linha.
  2. Prestione Ctrl+v e mova o cursor para baixo para selecionar os últimos dígitos das três linhas.
  3. Pressione : e digite I 1 (incremento de 1 a partir do valor base, ou ajuste o valor inicial para 1 antes de aplicar).
  4. Pressione Enter. Os valores serão atualizados para 2001, 2002 e 2003.

Etapa 3: Progressão Alfabética

Para gerar os sufixos dos nomes de usuário:

  1. Posicione o cursor sobre a letra 'x' na primeira linha.
  2. Use Ctrl+v e mova para baixo para selecionar a letra 'x' nas três linhas.
  3. Pressione : e digite IA (comando do VisIncr para sequência alfabética).
  4. Pressione Enter. As letras serão substituídas por 'a', 'b' e 'c'.

Tags: vim visual-block visincr text-editing Linux

Publicado em 7-6 22:19