代码之家  ›  专栏  ›  技术社区  ›  cdleary

多行C注释的不同文本宽度?

  •  20
  • cdleary  · 技术社区  · 14 年前

    2 回复  |  直到 14 年前
        1
  •  17
  •   UncleZeiv    14 年前

    显然,代码和注释都使用相同的方法 textwidth

     :autocmd CursorMoved,CursorMovedI * :if match(getline(.), '^\s*\*') == 0 | :setlocal textwidth=79 | :else | :setlocal textwidth=99 | :endif
    

    这里的关键部分是检测我们何时在评论中。如果您仅以这种方式设置注释格式:

    /*
     * my comment
     */
    

    我的正则表达式应该有用。。。除非代码中有以 * (我想这可能发生在 C C++ ). 如果您使用这样的注释:

    // comment line 1
    // comment line 2
    

    正则表达式更容易编写。如果你想涵盖所有可能的情况,包括角落案件,那么。。。我想最好的办法是定义一个单独的检测函数并从 :autocmd 而不是 match()

        2
  •  1
  •   William Clemens    14 年前

    我遇到了同样的问题,认为我已经找到了一个合适的解决办法。

    要仅使用cpp代码执行此操作,您需要将以下内容添加到~/.vim/ftdetect/cpp.vim公司文件。

    set textwidth=79
    match ErrorMsg '\%>99v.\+'
    

    注意:如果文件和文件夹不存在,您可能需要创建它们。

    如果对此有问题,请确保将formatoptions设置为:

    formatoptions=croql
    

    通过在vim中运行:set formatoptions可以看到这一点。