Estou escrevendo código C usando vim e procurando uma possibilidade de alinhar meus comentários à direita 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 */
deveria 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 não descobri ainda como realizar esse alinhamento. Talvez alguém saiba como?
Eu não insisto vim-easy-align
. Se você tiver outro plugin que faça o trabalho.. Apenas me diga;).
Responder1
Aqui está como fazer isso com comandos simples do vim, sem plug-ins usados:
No modo normal, coloque o cursor no primeiro caractere da string que deseja alinhar à direita, como o delimitador de comentário, e pressione então leaderpara tabalinhar o texto à direita.
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ário e pressionar leadertabnleadertabnleadertabn...
Responder2
MeuPlug-in AlignFromCursorfornece um <Leader>ri
mapeamento e :RightAlignFromCursor
um comando que faz isso. Basta colocar o cursor no espaço em branco antes do comentário (manualmente ou por meio de um :[range]normal
comando) e invocar o mapeamento ou comando. Ele usa 'textwidth'
ou um prefixo [count]
.