我正在使用 vim 编写 C 代码,并正在寻找一种可能性来右对齐我的注释,以便它们都以第 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
我的从光标对齐插件提供了执行此操作的<Leader>ri
映射和:RightAlignFromCursor
命令。只需将光标放在注释之前的空白处(手动或通过:[range]normal
命令)并调用映射或命令。它使用'textwidth'
或 前缀[count]
。