2010-04-30 50 views
0

如何在vim中編寫C++代碼時打破長行?舉例來說,如果我有像vim C++ break line

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的。

謝謝!

+0

我很困惑......你在尋找一種方法讓VIM爲你插入缺失的「」? – 2010-04-30 18:35:58

+0

因此,在gedit中,例如,如果我寫上面的代碼,我不會得到任何編譯錯誤,因爲它認爲下一行的內容只是前一行的延續,並且它會計算表達式的結束時間它看到「;」。用vim,當我有上面的行時,我在'on'和'line'之間按下了ENTER鍵時出現錯誤。那麼我在vim中必須做什麼,以便編譯器明白這兩行是1語句而不是2? – Myx 2010-04-30 18:39:30

+0

有效地相同的問題作爲http://stackoverflow.com/questions/1752079/in-c-can-a-long-printf-statement-be-broken-up-into-multiple-lines(這一個是C++而不是C,但答案是一樣的) – 2010-04-30 18:40:29

回答

1

像比利ONeal,我有點困惑爲什麼你問這是一個Vim的問題。你需要編寫的代碼是:

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

注意,沒有逗號 - 當你刪除多餘的空白,這是隻有兩個字符串文字在一起。他們將被合併爲一個,我相信這正是你想要的。

+0

你會想編輯你的迴應:)仔細看 – KevinDTimm 2010-04-30 18:41:16

+0

@KevinDTimm:那是關於我已經抓住的失蹤空間嗎? – Cascabel 2010-04-30 18:43:02

+0

是的,這是...... – KevinDTimm 2010-04-30 18:45:35

5

這不是一個Vim問題,這是一個C問題。

將報價放在一行的末尾和另一行的開頭。也許您正在尋找這樣的:

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

...如果你想知道如何把一個長的線一分爲二,如果你是分裂中間串,去要然後鍵入'i',然後輸入quote-enter-quote。在對齊第二行時,Vim將遵循你的cindent規則。

另外,也許這是一個觀點問題?如果你在那裏有換行符,它會給你一個編譯錯誤。但是,在vim中可能會出現這種情況,請將set wrapset lbr放入vimrc文件中。查看:help lbr的信息。還有一種方法可以配置線上的「領導者」,因此您知道這是一個僅查看的換行符。

2

我的建議是不要打破串 -

,而不是做

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

將尾隨\你要繼續行的末尾。

+0

我不相信在字符串文字內工作。 – 2010-04-30 18:42:21

+0

試試看: #include int main(){ printf(「Hello \ world \ n」); } – cs80 2010-04-30 18:47:27

+0

它確實有效,但是你必須小心你的間距,因爲新行上的所有內容(在'\'之後)都是字符串的一部分。 – KevinDTimm 2010-04-30 18:47:54