例如以下代码注释:
/* *This is a test. *Of the text formatting. */
我们可以通过以下操作来格式化这段注释:
v
进入可视化模式;gq
来格式化注释。结果如下:
/* *This is a test.Of the text formatting. */
'comments'选项,是一个由逗号分隔的列表。每个部分定义一种类型的注释字符串。每个部分由成对出现的标记:字符串(flag:string)组成。
可以使用的标记{flags}包括:
n | 可嵌套的注释: 允许多个部分间的嵌套。 |
b | 如果一个字符后面紧跟空格或是空白符(<Space>, <Tab>, <EOL>),那么这个字符开始了一个注释。 |
f | 该注释字符串只在首行出现。下一行不重复注释,但保留相同的缩进。 |
s | 三段式注释的起始字符串 |
m | 三段式注释的中间字符串 |
e | 三段式注释的结尾字符串 |
l | 左对齐。在三段注释中,与s或e标记搭配使用。起始或结尾字符串的最左字符和中间字符串的最左字符对齐。 |
r | 右对齐。同上,但为最右字符。 |
O | "O" 命令不把它当作注释。 |
x | 允许三段式注释用以下方式结束: 在中间字符串自动提供的情况下,在新行第一 个动作是输入结尾字符串的最后一个字符。 |
{digits} | 在和s或e标记一起使用时: 对自动插入的中间或结尾字符串增加{digit}单位的位移。该位移以左对齐的位置为基准。 |
-{digits} | 和{digits}类似,但减少缩进。这只对开始或结尾部分至少有相当数量的缩进时才有效。 |
例如以下C语言的注释,用“/*”开始;中间部分以“*”前导;以“*/”结尾:
/* * This is a comment */
以上注释格式可以由以下comments选项定义:
:set comments=sl:/*,mb:*,ex:*/
其中,
'formatoptions'选项用来控制Vim对文本的排版格式,它可以包含下列字符,并以逗号分隔。其缺省设置为 "tcq",建议更改为以下设置:
:set formatoptions=croql
c | 使用'textwidth'选项 自动回绕注释,自动插入当前注释前导符。 |
r | 在插入模式按回车时,自动插入当前注释前导符。 |
o | 在常规模式下使用o或者O命令时,自动插入当前注释前导符。 |
q | 允许使用gq命令来格式化注释。 |
l | 插入模式不分行: 当一行已经超过'textwidth'时,插入命令不会自动排版。 |
当输入注释的开始标记“/*”,然后按下回车键时,根据r选项,将在下一行中会自动添加注释的前导符“*”,以及紧随其后的一个空格;继续输入具体的注释文字;当想要结束注释输入时,只需要输入“/”,光标就会自动回退一格并插入“/”,即自动完成了注释输入。其结果如下:
/* * This is a test */
定义快捷键,为当前行增加注释“/* ... */”:
:map = I/* <ESC>A */<ESC>
使用以下替换命令,为指定行增加注释“/* ... */”:
:1,10s!.*!/* & */!
使用以下替换命令,将删除所有“/* ... */”注释:
:%s!\s*/\*\_.\{-}\*/\s*! !g
其中,\_.将匹配包含换行在内的所有字符;\{-}表示前一个字符可出现零次或多次。请注意,被有“/* ... */”包围的所有字符也将被删除。
使用以下替换命令,将删除所有“//”注释:
:%s!\s*//.*!!
请注意,所有“//”开头的所有字符也将被删除。
使用以下替换命令,为指定行增加注释“#...”
:1,10s/^/#
使用以下替换命令,为指定行取消注释“#...”
:1,10s/^#/
如果希望快捷输入以下格式的注释块,那么可以利用Vim的缩写功能。通过:abbreviate缩写命令,可以用一个缩写来代替一组字符,此后只要输入缩写,就可以自动扩展为其代表的字符串以提高输入效率。
/**************************************************** * Program - Solve it - Solves the worlds problems. * * All of them. At once. This will be a great * * program when I finish it. * ****************************************************/
首先在vimrc配置文件中,增加以下缩写定义:
ab #b /********************************** ab #e **********************************/
在输入代码时,只需要键入#b,然后按下回车键,即可以扩展为以下注释:
/**************************************************** *
输入具体注释文字之后,键入#e,然后按下回车键,即可以扩展为以下注释:
****************************************************/
:help format-comments
gq | 格式化注释 |
:set comments | 设置注释字符串格式 |
:set formatoptions | 设置文本排版格式 |