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':
- Posicione o cursor sobre o primeiro dígito '8' da primeira linha.
- Pressione
Ctrl+vpara iniciar o bloco visual. - Pressione
Gpara estender a seleção até a última linha. - Presssione
r(replace) seguido de9. - Pressione
Escpara aplicar a alteração e retornar ao modo Normal.
Etapa 2: Inserção de Prefixo
Para adicionar o comando inicial em todas as linhas:
- Mova o cursor para o primeiro caractere da primeira linha.
- Pressione
Ctrl+ve depoisGpara selecionar a primeira coluna de todas as linhas. - Pressione
I(Insert maiúsculo) para entrar no modo de inserção no início do bloco. - Digite
docker run -d -p(incluindo o espaço final). - 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:
- Posicione o cursor no último dígito da primeira linha.
- Pressione
Ctrl+veG. - Pressione
A(Append maiúsculo) para inserir após o bloco selecionado. - Digite
:80 backend_svc. - Pressione
Escpara 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:
- Posicione o cursor no dígito '0' (de 2000) da primeira linha.
- Prestione
Ctrl+ve mova o cursor para baixo para selecionar os últimos dígitos das três linhas. - Pressione
:e digiteI 1(incremento de 1 a partir do valor base, ou ajuste o valor inicial para 1 antes de aplicar). - 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:
- Posicione o cursor sobre a letra 'x' na primeira linha.
- Use
Ctrl+ve mova para baixo para selecionar a letra 'x' nas três linhas. - Pressione
:e digiteIA(comando do VisIncr para sequência alfabética). - Pressione
Enter. As letras serão substituídas por 'a', 'b' e 'c'.