quarta-feira, 25 de março de 2009

Mapeamento recursivo

Quando o mapeamento dispara a si próprio, ele rodará para sempre. Isto pode ser usado para repetir uma ação ilimitadas vezes.

Por exemplo, voce tem uma lista de arquivo que tem o número de versão na primeira linha. Voce edita os arquivos com 'vim *.txt'.
Agora voce está editando o primeiro arquivo e define o mapeamento:

:map ,, :s/5.1/5.2/<CR>:wnext<CR>,,

Agora voce digita ',,' para disparar o mapeamento:
substitue '5.1' por '5.2'
grava o arquivo e edita o próximo.
e chama ',,', o próprio mapeamento.

Isto dispara o mapeamento de novo com as substituições, etc.

Isto continua até ocorrer um erro.
Pode ser que se um arquivo não tem '5.1' então insere-se '5.1' e digita ',,'
de novo.
Ou pode ser que ':wnext' falha pois estamos no último arquivo da lista.

Quando o mapeamento falha no meio do caminho o resto é descartado.

<Ctrl>C interrompe o mapeamento.

0 comentários:

Postar um comentário