2012-04-06 8 views
5

Ich benutze die "Syntax" foldmethod in vim 7.3. In .vimrc:VIM-Syntax falten: deaktivieren Sie das Falten mehrzeiliger Kommentare

set foldmethod=syntax 

Wenn I Test.cpp öffnen, enthaltend:

/* A function with a multi-line 
* comment. This takes at least 
* four lines and I want to be 
* able to read all of them. 
*/ 
void TheFunction() 
{ 
    DoStuff(); 
} 

I die folgende, wenn sie gefaltet siehe:

+-- 5 lines: A function with a multi-line--------------------------------------------- 
void TheFunction() 
+-- 3 lines: {------------------------------------------------------------------------ 

Ich mag die Funktionskörper Faltung, aber nicht die Kommentar-Faltung. Ich möchte es deaktivieren, so dass es so aussieht:

/* A function with a multi-line 
* comment. This takes at least 
* four lines and I want to be 
* able to read all of them. 
*/ 
void TheFunction() 
+-- 3 lines: {------------------------------------------------------------------------ 

Wie mache ich das? Ich kann die Syntaxgruppe sehen, die mit relevant ist: syn Liste cComment

cComment  xxx matchgroup=cCommentStart start=+/\*+ end=+\*/+ extend fold contains 
[email protected],cCommentStartError,cSpaceError,@Spell 
        links to Comment 

Aber Ausrüstung um eine Stunde mit der vim Dokumentation und Google hat mir nicht gesagt, wie das „fold“ aus dieser Gruppe Attribut zu entfernen.

Ist meine einzige Möglichkeit wirklich, die Sprach-Syntax-Datei zu bearbeiten? Ich nehme an, es ist weniger hässlich, die System-Syntax-Datei zu kopieren und diese zu verwenden, aber ich sollte in der Lage sein, eine bestimmte Gruppe mit einem Befehl in meiner .vimrc auszuschalten.

+0

kevs Antwort funktioniert perfekt. Dies finden Sie im Abschnitt syn-file-notes der Dokumentation 'help ft-c-syntax'. Sie können auch '#if 0' Stilkommentare mit' let c_no_if0_fold = 1' falten. – reasgt

Antwort

5

Wenn 'foldmethod'-"syntax" gesetzt ist, dann /* */ comments und { } blocks wird eine Falte werden. Wenn Sie nicht möchten, dass Kommentare zu einer Falte werden, verwenden Sie:

:let c_no_comment_fold = 1