Vim - 评论自动包装混乱块插入

时间:2014-11-21 21:33:53

标签: vim

我使用vim的块插入来注释这样的代码块(将方括号视为光标):

[k]eyword {
  variable declaration;
  return_type function_or_something() {
    for (a; b; c) {
      do_something_funky();
    }
}

点击Ctrl+V 6jI// Space Esc

[/]/ keyword {
//   variable declaration;
//   return_type function_or_something() {
//     for (a; b; c) {
//       do_something_funky();
//     }
// }

一切都很好,但在这种情况下:

[k]eyword { // this is a block of code with a somewhat long comment
  variable declaration;
  return_type function_or_something() {
    for (a; b; c) {
      do_something_funky();
    }
}

点击Ctrl+V 6jI//,此时textwidth=80formatoptions=caq1njw的组合开始了,因为我的//已经超过了文字宽度,它触发了换行,一旦发生这种情况,我的可视块插入操作就是吐司,所以只有第一行实际上最终被注释掉了,结果我放松了一串咒骂。

[/]/keyword { // this is a block of code with a somewhat long
//comment
  variable declaration;
  return_type function_or_something() {
    for (a; b; c) {
      do_something_funky();
    }
}

似乎是一个长镜头,但我想知道是否有人知道一个解决方法/修复......当我开始一个视觉块选择时,我可以暂时吹走formatoptions?怎么做?

注意:我尝试在o之前点击I将光标放在块选择的下边缘,但它没有帮助,它的工作方式是一旦你击中I它会将光标重新定位到顶行,随后在您将该行转换为注释时将其复活。

1 个答案:

答案 0 :(得分:1)

Vim无法识别已注释掉的代码和正常注释。我不认为这样的事情存在。您的'formatoptions'指定评论中插入的文字应该重排。您正在插入评论,以便评论将重排。你可以通过不插入而不是其他东西来避免这种情况,比如替换。

:s#^#//

但到目前为止,最简单的解决方案是使用众多评论插件中的一个。有很多选项:commentary(我使用),Nerd CommenterEnhCommentifytComment,...,etc