Alinhar os comentários à direita no vim

4

Estou escrevendo código C usando vim e procurando uma possibilidade de alinhar meus comentários corretamente para que todos terminem na coluna 80. Para dar um breve exemplo:

int a = 80; /* initialize a */
int b = 7; /* initialize b */
printf("%d + %d = %d", a, b, a+b); /*calculate the result */

deve se transformar em

int a = 80;                               /* initialize a */
int b = 7;                                /* initialize b */
printf("%d + %d = %d", a, b, a+b); /*calculate the result */
                                                           ^col 80

Instalei vim-easy-align para fazer outras formatações, mas ainda não descobri como realizar esse alinhamento. Talvez alguém saiba como?

Eu não insisto em vim-easy-align . Se você tem outro plugin que faz o trabalho .. Apenas me diga;).

    
por ma0ho 15.05.2014 / 11:26

2 respostas

4

Meu plug-in AlignFromCursor fornece os comandos <Leader>ri mapping e :RightAlignFromCursor que fazem isso . Basta colocar o cursor no espaço em branco antes do comentário (manualmente ou por meio de um comando :[range]normal ) e chamar o mapeamento ou comando. Usa 'textwidth' ou um prefixo [count] .

    
por 15.05.2014 / 11:37
1

Aqui está como fazer isso com comandos vim simples, sem plugins usados:

No modo normal, coloque o cursor no primeiro caractere da string que deseja alinhar à direita, como o delimitador de comentário, e depois pressione líder e a seguir a aba alinhar à direita o texto.

nnoremap <leader><tab> mc80A <esc>080lDgelD'cP

Com explicações:

mc80A <esc>080lDgelD'cP
| |        |   ||  ||
mc|        |   ||  ||    Mark the position of the cursor
  |        |   ||  ||
  80A <esc>|   ||  ||    Append 80 spaces at the end
           |   ||  ||
           080l||  ||    Go the the 80th column from the beginning of the line
               ||  ||
               D|  ||    Delete what is next
                |  ||
                gel||    goes after the last string char
                   ||
                   D|    Delete the characters remaining (complement to go 80)
                    |
                    'cP  and paste these to shift the string up to 80 column.

Para marcar vários comentários, você pode pesquisar a próxima ocorrência de um delimitador de comentários e pressionar líder guia n líder separador n líder separador n ...

    
por 06.02.2016 / 03:48