【问题标题】:vim c++ break linevim c++ 换行
【发布时间】:2010-04-30 18:34:26
【问题描述】:

在 vim 中编写 c++ 代码时如何断行?例如,如果我有类似的东西

56 fprintf(stderr, "Syntax error reading recursion value on 
57                line %d in file %s\n", line_count, filename);

我得到以下编译错误:

:56:25: warning: missing terminating " character
:56: error: missing terminating " character
:57: error: stray ‘\’ in program
:57:37: warning: missing terminating " character
:57: error: missing terminating " character

我是 vim 新手。

谢谢!

【问题讨论】:

  • 我很困惑...您是否正在寻找一种方法让 VIM 为您插入缺少的 ""?
  • 所以在gedit中,例如,如果我写了上面的行,我不会得到任何编译错误,因为它认为下一行的内容只是上一行的延续,它当它看到“;”时计算我的表达式的结尾。使用 vim,当我在上面的行中出现错误时,我在 online 之间按下了 ENTER。那么我在 vim 中需要做什么才能让编译器明白这两行是 1 条语句而不是 2 条语句?
  • 实际上和stackoverflow.com/questions/1752079/…一样的问题(这个是C++而不是C,但答案是一样的)
  • @Myx:很明显,您使用这两个编辑器创建的实际文本之间存在差异。我不确定是什么......也许你在一个中使用 windows/dos 换行符而不是另一个?但是你需要弄清楚他们在做什么不同。也许尝试区分每个创建的文件。
  • @Myx:那么你真正想要的是 VIM 中的自动换行,对吗?

标签: c++ vim formatting


【解决方案1】:

这不是 Vim 问题,这是 C 问题。

将引号放在一行的末尾和另一行的开头。也许你正在寻找这个:

fprintf(stderr, "Syntax error reading recursion value on "
                "line %d in file %s\n", line_count, filename);

...如果您想知道如何将一根长线变成两根,如果您要拆分中间字符串,请转到您要拆分的位置,然后输入 'i' 后跟 quote-enter -引用。 Vim 在对齐第二行时会遵循你的 cindent 规则。

或者,也许这是一个视图问题?如果你有一个换行符,它会给你一个编译错误。但是,在 vim 中可能会出现断线,将 set wrapset lbr 放入您的 vimrc 文件中。查看:help lbr 获取信息。还有一种方法可以在行上配置“leader”,所以你知道它是一个view-only linebreak。

【讨论】:

    【解决方案2】:

    我的建议是不要破坏字符串 -

    改为

        fprintf (stderr,  
                 "Syntax error reading recursion value on line %d in file %s\n", 
                 line_count, 
                 filename);
    

    【讨论】:

      【解决方案3】:

      像 Billy ONeal 一样,我有点困惑你为什么要问这个 Vim 问题。你需要写的代码是:

      fprintf(stderr, "Syntax error reading recursion value on "
                      "line %d in file %s\n", line_count, filename);
      

      请注意,没有逗号 - 当您删除额外的空格时,这只是两个字符串文字在一起。它们将合二为一,我相信这正是您想要的。

      【讨论】:

      • @KevinDTimm:那是关于我已经捕捉到的缺失空间吗?
      【解决方案4】:

      在要继续的行尾添加一个尾随。

      【讨论】:

      • 试试看:#include int main() { printf("Hello \ world\n"); }
      • 它确实有效,但你必须注意你的间距,因为新行上的所有内容(在'\'之后)都是字符串的一部分。
      • 虽然它确实有效并且符合标准,但问题是它还会添加所有用于缩进该行第二部分的空格。在这种情况下,字符串文字连接方法可能是最好的解决方案。
      • 我同意 Kevin & Hudson 的观点,即尾随 \ 不如使用单独的字符串文字好,尤其是在可读性方面,但它确实允许您继续长行。
      猜你喜欢
      • 2013-09-22
      • 2010-12-24
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      相关资源
      最近更新 更多