Я пишу код на языке 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]
.