当我从注释行开始新行时,Vim自动插入注释,因为我已经设置了formatoptions=tcroql
。例如(光标是*
):
// this is a comment*
并击中<Enter>
(插入模式)或o
(普通模式)后,我留下:
// this is a comment
// *
编写长的多行注释时,此功能非常方便,但通常我只想单行注释。现在,如果我想结束评论系列,我有几种选择:
- 击中
<Esc>S
- 打
<BS>
三遍
这两个都提供了三个击键,与<Enter>
这一起意味着新行的四个击键,我认为这太多了。理想情况下,我想再打<Enter>
一次:
// this is a comment
*
重要的是,该解决方案也应适用于不同的压痕级别,即
int main(void) {
// this is a comment*
}
击中 <Enter>
int main(void) {
// this is a comment
// *
}
击中 <Enter>
int main(void) {
// this is a comment
*
}
我想几年前我已经在某些文本编辑器中看到了此功能,但我不记得是哪个功能。有谁知道可以在Vim中为我做到这一点的解决方案?也欢迎欢迎就正确的方向提出自己的解决方案。
3
您可以在插入模式下使用ctrl-u删除一个键和弦中自动插入的注释标记。
—
Etan Reisner
@EtanReisner实际上更好,但是对我来说仍然是一个按键,因为这是一个非常常见的用例:)
—
Patrick Oscity
您建议您希望能够再次按Enter来获得所需的行为,但是ctrl-u太多了?您可以尝试在插入模式下映射<enter> <enter>来自动为您执行ctrl-u,但是如果您只击过一次<enter>(不击中其他任何东西),则会带来延迟。
—
Etan Reisner
另外,它仅应在注释行为空时触发。按下<Enter>时出现明显的延迟也是不可接受的。
—
Patrick Oscity
如果您不按我相信的任何其他键,这只会延迟,因为vim将需要等待以确保您仍然不打算按其他键。我认为您也可以使用一个函数来执行该检查,尽管这样做可能并不是特别简单。
—
Etan Reisner