Выравнивание комментариев по правому краю в vim

Выравнивание комментариев по правому краю в vim

Я пишу код на языке C с помощью vim и ищу возможность выровнять комментарии по правому краю, чтобы они все заканчивались на 80-м столбце. Приведу короткий пример:

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

должен превратиться в

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

Я установил, vim-easy-alignчтобы сделать другие форматирования, но пока не нашел, как выполнить это выравнивание. Может кто-то знает, как?

Я не настаиваю на этом vim-easy-align. Если у вас есть другой плагин, который выполняет эту работу.. Просто скажите мне ;).

решение1

Вот как это сделать с помощью простых команд vim, без использования плагинов:

В обычном режиме поместите курсор на первый символ строки, которую вы хотите выровнять по правому краю, например, на разделитель комментариев, а затем нажмите , leaderчтобы tabвыровнять текст по правому краю.

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

С пояснениями:

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.

Чтобы отметить несколько комментариев, вы можете найти следующее вхождение разделителя комментариев и нажать leadertabnleadertabnleadertabn...

решение2

МойПлагин AlignFromCursorпредоставляет <Leader>riсопоставление и :RightAlignFromCursorкоманду, которые это делают. Просто поместите курсор в пробел перед комментарием (вручную или с помощью :[range]normalкоманды) и вызовите сопоставление или команду. Он использует 'textwidth'или префикс [count].

Связанный контент