Indentando um número X de linhas no vim

3

Recentemente, codifiquei em Java para um trabalho e notei que escreverei um código e, em seguida, determinarei que preciso envolver o código em um bloco try / catch.

Acabei de me mudar 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)

Agora, isso foi bom nas primeiras três ou quatro vezes que tive que recuar, mas agora é só tornar-se tedioso e eu sou uma pessoa preguiçosa.

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

    
por flumpb 24.12.2010 / 04:16

4 respostas

8

Outra opção é selecionar as linhas usando Shift + V como 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 com número > , por exemplo 2 > para recuar dois níveis.

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

    
por 24.12.2010 / 04:38
2

Use o modo visual ( V ) ou linha visual ( Shift V ) para selecionar as linhas a serem recuadas, pressione : , em seguida, insira s/^/ Ctrl V Guia / .

    
por 24.12.2010 / 04:20
0

Outra maneira:
CTRL + v (isto inicia o modo de bloqueio visual)
x j ou x k (onde x representa o número de linhas abaixo ou abaixo) ( shift ) / kbd> + . )

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

    
por 24.12.2010 / 09:17
0

O Vim é muito mais inteligente do que as outras respostas permitem: você pode reindentar automaticamente uma zona de código. Normalmente, de dentro de um bloco try , você só precisa digitar =i{ - na verdade, isso funcionará de qualquer bloco de chaves. E isso é tudo ... contanto que suas opções de recuo ( cindent , expandtab , sw ) estejam definidas corretamente para suas necessidades e gostos.

O próximo passo seria usar um mapeamento que saiba cercar qualquer conjunto de linhas selecionadas com seu bloco try (e isso não se esqueça de reinserir no final do processo). Eu tenho uma coisa dessas para C ++ , não seria complexo adaptá-lo ao java. (Ele apenas requer dois outros plugins de biblioteca: lh-vim-lib e lh-map-tools .

    
por 24.12.2010 / 15:14

Tags