Recuando um número X de linhas no vim

Recuando um número X de linhas no vim

Estive codificando em Java para um trabalho recentemente e percebi que escreverei algum código e então determinarei que preciso agrupar o código em um bloco try/catch.

Acabei de passar para o início de uma linha e adicionar uma guia.

0 i <tab> <esc> k (repeat process until at beginning or end of block)

Bem, isso foi bom nas primeiras três ou quatro vezes que tive que recuar, mas agora ficou tedioso e sou uma pessoa preguiçosa.

Existe uma maneira mais fácil de lidar com esse problema?

Responder1

Outra opção é selecionar as linhas usando Shift+ Vcomo sugere Ignacio, mas depois pressionar >(sinal maior que). Isso faz um recuo de acordo com suas configurações de recuo (shiftwidth, expandtab, etc).

Você também pode recuar mais de um nível comnúmero>, por exemplo, 2>para recuar dois níveis.

Finalmente, se o Vim reconhecer o tipo de arquivo (type :set filetype?, ele deve imprimir filetype=java), então você pode selecionar qualquer código como acima e pressionar =, e isso corrigirá o recuo usando as regras para esse tipo de arquivo.

Responder2

Use o modo visual ( V) ou linha visual ( ShiftV) para selecionar as linhas a serem recuadas, pressione :e insira s/^/CtrlVTab/.

Responder3

Outra forma:
CTRL+ v(isso inicia o modo de bloco visual)
x jou x k(onde x representa o número de linhas para baixo ou para cima)
>(também conhecido como shift+ .)

Isso não é muito diferente das respostas acima, mas apresenta o modo de bloco, que é muito bom para editar várias linhas.

Responder4

O Vim é muito mais inteligente do que as outras respostas permitem pensar: ele é capaz de reindentar automaticamente uma zona de código. Normalmente, de dentro de umtentarbloco, você apenas terá que digitar =i{- na verdade, isso funcionará em qualquer bloco entre colchetes. E isso é tudo... contanto que suas opções de recuo ( cindent, expandtab, sw) estejam configuradas corretamente para suas necessidades e gostos.

O próximo passo seria usar um mapeamento que saiba cercar qualquer conjunto de linhas selecionadas com seutentarbloco (e isso não esquece de reindentar no final do processo). eu tenho uma coisa dessaspara C++, não seria tão complexo adaptá-lo para java. (Istoapenasrequer dois outros plug-ins de biblioteca:lh-vim-libelh-map-ferramentas.)

informação relacionada