Lassen Sie Vim nur einige Arten von Kommentaren in der nächsten Zeile fortsetzen

363
interfect

Ich möchte, dass Vim die /*...*/Kommentare in der nächsten Zeile fortsetzt, indem er den Kommentarvorsatz automatisch einfügt, die Kommentare jedoch //nach einer einzelnen Zeile beendet.

Das Vim-Wiki empfiehlt:

autocmd FileType c,cpp setlocal comments-=:// comments+=f:// 

Dies bewirkt jedoch, dass die Eingabetaste in einer Zeile mit einem //Kommentar die nächste Zeile dahin rückt, wo der Kommentartext in der vorhergehenden Zeile war, was falsch ist. Dies liegt an dem Verhalten der fOption für comments, wie in der Vim-Hilfe dokumentiert:

 f Only the first line has the comment string. Do not repeat comment on the next line, but preserve indentation (e.g., a bullet-list). 

Was ich will, ist das Verhalten von f, aber nicht die Einrückung im Stil einer Liste mit Aufzählungszeichen. Wenn ich aus einem einzeiligen //Kommentar zur nächsten Zeile komme, möchte ich mit dem tatsächlichen Codeeinzug auf einer Ebene stehen. Ist dies nur durch Anpassung der Konfiguration möglich? Muss ich meine Eingabetaste durch eine ausgefallene Funktion ersetzen, um den Einzug rückgängig zu machen?

Eine nicht-Lösung zu entfernen ist //von commentsingesamt. Das wird nicht funktionieren, weil es verhindert, dass //Kommentare von mit richtig umgebrochen werden gq, da gqverläßt sich auf commentswissen, was Kommentar Führer aus dem Text filtern es wickelt.

Eine andere Sache, die ich nicht tun kann, ist setlocal formatoptions-=r, weil dadurch das Einfügen von Kommentar-Leitern sogar für /*...*/Kommentare deaktiviert wird .

Dies ist ähnlich wie bei Vim: Auto-Kommentar in einer neuen Zeile, auf der Suche nach einem schnellen Weg, um den //Einfügemodus zu beenden, es sei denn, ich möchte den //Einfügevorgang überhaupt nicht.

0

0 Antworten auf die Frage