Yank todas as declarações de função

2

Algo que tenho que fazer é ter protótipos para todas as minhas funções no meu código C no topo do arquivo. Qual seria uma maneira de selecionar rapidamente todas as declarações de função em um arquivo .c usando o vi / vim, para que eu possa arrancá-las e colar no topo do arquivo?

Note que eu uso declarações de função de uma linha com os argumentos em linha, então toda declaração será sempre uma única linha.

    
por Tyler Durden 18.02.2015 / 16:00

1 resposta

3

Comece logo acima da primeira função e pule para a chave de abertura com ]M . Agora você pode pular para o próximo com ]}]M ( ]} = chave de fechamento e, em seguida, ]M novamente), que é um pouco prolixo, então mapeie isso para uma tecla f:

:nmap <F9> ]}]M

Se você usar "goldilocks" recuo de estilo , por exemplo:

void foo (int bar) {

Isso leva você à mesma linha da assinatura - presumindo que esteja tudo em uma linha. Se você usar os estilos KS, R, Allman ou GNU, um pouco mais tolos, mas muito mais comuns, você estará com uma linha de baixo, caso em que você realmente deseja:

:nmap <F9> ]}]Mk

k move uma linha para cima. Na primeira função, coloque a linha em um buffer nomeado, eu usarei "p" para o protótipo, então "pyy ( yy é para "yank line"). Nas funções subseqüentes, você deseja anexar a esse buffer capitalizando o nome: "Pyy .

Você pode adicionar isso à chave de função nmap se tiver certeza de que todas as assinaturas estão em uma linha.

:nmap <F9> ]}]Mk"Pyy

Se não, você poderia mapeá-lo para uma chave separada e usar seu cérebro apropriadamente ao prosseguir; você terá que olhar e colar manualmente multi-linha sigs.

Quando tiver todos eles, você poderá colar esse buffer com "pp - o segundo p é para "colar buffer". Se você usa o estilo goldilocks, agora precisa :s/ {$/;/ dessas linhas.

    
por 18.02.2015 / 17:09

Tags