vimrc - wie blockiere ich einen Kommentar?

14

Ich möchte keine Textzeilen in einer Textdatei oder einem Code kommentieren. Ich suche nach dem Einfügen von Blockkommentaren in eine .vimrc- Datei. So fügen Sie einen einzeiligen Kommentar "ein, zum Beispiel:

" remove spaces and tabs as well  at the end of line automatically while saving
autocmd BufWritePre * :%s/\s\+$//e

Jetzt habe ich im Laufe der Jahre nach dem Surfen im Internet eine relativ große Anzahl von Einstellungen / Konfigurationen / Plugins gesammelt, um coole Funktionen hinzuzufügen. Ich möchte meiner .vimrc-Datei einige große Kommentarblöcke hinzufügen. Das Hinzufügen "zu jeder Zeile ist eine Option, aber ich suche nach einer Blockkommentarsyntax. Ähnlich wie /**/in C.

//ist identisch mit "
/* */ist identisch mit _ ____ ?

Das Durchsuchen von Unix.SE, SO und Googeln hat nicht viel geholfen.

mtk
quelle
1
Ich vermute, dass die Funktion für mehrzeilige Kommentare in vim-config-Dateien nicht vorhanden ist.
Dilawar

Antworten:

5

Ich denke nicht, dass dies möglich ist. Das Beste, was Sie tun können, ist, einen Text zu blockieren und das erste Zeichen s/^/"/in vim zu suchen / zu ersetzen , um ein "am Anfang jeder Zeile einzufügen .

Das vim-Plugin NERD Commenter könnte dies ebenfalls vereinfachen.

slm
quelle
1
Ich benutze die Problemumgehung:., + 3s / ^ / "/ wobei Punkt die aktuelle Linie darstellt und +3 die Anzahl aufeinanderfolgender (nach der
Punktlinie
6

Meine Lösung besteht darin, den Code in a zu verpacken function .

Dies funktioniert gut in vimrc, z. B. für In-Place- Tests zur Hervorhebung der Heredoc- Syntax, für die auch echte Blockkommentare ohne führende Zeichen erforderlich sind. In meinem vimrc verwende ich einen solchen Block direkt nach dem Einrichten meiner heredoc SyntaxRanges .

function! _blockcomment()

    " free text comment
    You can write free text here,
    but vim will try to highlight it as vimscript!

    " markdown heredoc
    test <<MD
    ### Nevertheless ###
    * for testing my fuzzy SyntaxRange heredocs
    * having no leading chars is essential
    * and the blockcomment function does the trick
    MD  

endfunction 

Diese Lösung ähnelt dem if 0Trick von @ Stéphane , der bei mir nicht funktioniert hat. Rufen Sie diese Funktion niemals auf!

Juve
quelle
1

Ein Trick:

  • Platzieren Sie den Cursor auf dem ersten Zeichen der ersten zu kommentierenden Zeile
  • Drücken Sie Strg-V, um in den Visual Block-Modus zu wechseln
  • Bewegen Sie den Cursor bis zur letzten zu kommentierenden Zeile
  • Drücken Sie I (Umschalt + i), um in den bedingten Einfügemodus zu wechseln
  • Drücken Sie '"', um einen Kommentar abzugeben (ein Zitat und ein Leerzeichen).
  • Drücken Sie die Esc-Taste, um den Einfügemodus zu beenden

Allen ausgewählten Zeilen wird jetzt die Zeichenfolge vorangestellt, die Sie im Einfügemodus eingegeben haben.

lgeorget
quelle
Vielen Dank, aber ich habe nach dem Blockkommentarstil in vimrc gesucht .
MTK
Ich glaube nicht, dass es in vim eine solche Funktion gibt. Übrigens ist es nicht so üblich. In vielen Skriptsprachen ist es üblicher, einzeilige Kommentare für eine Reihe von Zeilen zu verwenden.
Lgeorget
1

Verwenden Sie das tCommentPlugin für Vim: http://www.vim.org/scripts/script.php?script_id=1173

Ja, es unterstützt Python (hinzugefügt 2011).

Beschreibung: TComment funktioniert wie ein Umschalter, dh es wird Text auskommentiert, der nicht kommentierte Zeilen enthält, und es wird bereits kommentierter Text auskommentiert (dh Text, der keine nicht kommentierten Zeilen enthält).

Wenn der Dateityp richtig definiert ist, ermittelt TComment anhand der Werte von & commentstring oder & comment, welche Kommentarzeichenfolge verwendet werden soll. Für einige Dateitypen wird die Kommentardefinition explizit definiert. Sie können | tcomment # DefineType () | um eigene Definitionen hinzuzufügen.

TComment weiß, wie man mit eingebettetem Code eines anderen Dateityps als dem Hauptdateityp umgeht, z. B. Ruby / Python / Perl-Regionen in VIM-Skripten, HTML oder JavaScript in PHP-Code usw.

Als Operator (das Präfix kann über g: tcommentMapLeaderOp1 und g: tcommentMapLeaderOp2 angepasst werden):

gc{motion}   :: Toggle comments (for small comments within one line 
                the &filetype_inline style will be used, if 
                defined) 
gcc          :: Toggle comment for the current line 
gC{motion}   :: Comment region 
gCc          :: Comment the current line 

Primärschlüsselkarten:

<c-_><c-_>   :: :TComment 
<c-_><space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END> 
<c-_>b       :: :TCommentBlock 
<c-_>a       :: :TCommentAs <QUERY COMMENT TYPE> 
<c-_>n       :: :TCommentAs &filetype <QUERY COUNT> 
<c-_>s       :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE> 
<c-_>i       :: :TCommentInline 
<c-_>r       :: :TCommentRight 
<c-_>p       :: Comment the current inner paragraph 

Es gibt auch einen sekundären Satz von Schlüsselkarten mit _ als Leader (bevorzugter bei Terminals).

Laebshade
quelle
1

Es gibt dieses lebensverändernde Plugin tpopenamensvim-commentary

https://github.com/tpope/vim-commentary

Dieses Plugin bietet :

  • Geistige Gesundheit
  • Richtig eingerückte Kommentare
  • Kommentiert keine leeren / unnötigen Zeilen aus

Verwendung :

  • Installieren Sie über Vundle (oder Pathogen, denke ich).
  • Markieren Sie Ihren Text und drücken Sie :, um anzuzeigen, wie:<,'>
  • Geben Sie hier Kommentar ein :<,'>Commentaryund drücken Sie die Eingabetaste.
  • Bom. Deine fertige Knospe.
Weston Ganger
quelle