Ich habe mir einen einfachen Zusatz zu meiner .vimrc-Datei ausgedacht, der ziemlich gut funktioniert und leicht erweitert werden kann. Sie fügen einfach einen neuen Dateityp zur comment_map und seinem Kommentarführer hinzu.
Ich habe eine Zuordnung zu den Modi "Normal" und "Visuell" hinzugefügt, aber Sie können die Zuordnung nach Belieben ändern. Ich ziehe es vor, nur eine "Toggle"-Funktion zu haben. Man erträgt es, mehrere Zuordnungen usw. zu haben.
let s:comment_map = {
\ "c": '\/\/',
\ "cpp": '\/\/',
\ "go": '\/\/',
\ "java": '\/\/',
\ "javascript": '\/\/',
\ "lua": '--',
\ "scala": '\/\/',
\ "php": '\/\/',
\ "python": '#',
\ "ruby": '#',
\ "rust": '\/\/',
\ "sh": '#',
\ "desktop": '#',
\ "fstab": '#',
\ "conf": '#',
\ "profile": '#',
\ "bashrc": '#',
\ "bash_profile": '#',
\ "mail": '>',
\ "eml": '>',
\ "bat": 'REM',
\ "ahk": ';',
\ "vim": '"',
\ "tex": '%',
\ }
function! ToggleComment()
if has_key(s:comment_map, &filetype)
let comment_leader = s:comment_map[&filetype]
if getline('.') =~ "^\\s*" . comment_leader . " "
" Uncomment the line
execute "silent s/^\\(\\s*\\)" . comment_leader . " /\\1/"
else
if getline('.') =~ "^\\s*" . comment_leader
" Uncomment the line
execute "silent s/^\\(\\s*\\)" . comment_leader . "/\\1/"
else
" Comment the line
execute "silent s/^\\(\\s*\\)/\\1" . comment_leader . " /"
end
end
else
echo "No comment leader found for filetype"
end
endfunction
nnoremap <leader><Space> :call ToggleComment()<cr>
vnoremap <leader><Space> :call ToggleComment()<cr>
Note :
Ich benutze keine Callbacks oder Hooks in den Dateitypen/Laden, weil ich finde, dass sie den Start von Vim mehr verlangsamen als die .vimrc
statische Funktion/Karte tut, aber das ist nur meine Vorliebe. Ich habe auch versucht, es einfach und performant zu halten. Wenn Sie Autocommands verwenden, müssen Sie sicher sein, sie in eine Autocommand-Gruppe zu setzen, sonst werden die Rückrufe mehrmals pro geladener Datei zum Dateityp hinzugefügt und verursachen eine Menge Leistungseinbußen.
51 Stimmen
Die akzeptierte Antwort sollte in eine der Antworten geändert werden, die eine detaillierte Anleitung enthält, wie man Blöcke zum Kommentieren und Löschen von Kommentaren ohne die Verwendung eines Plugins erstellen kann. Die aktuell akzeptierte Antwort ist im Grunde nur ein Link zu einem Plugin eines Drittanbieters.
0 Stimmen
Die am besten bewertete Antwort erwähnt keine Plugins, @rationalis Ihr Kommentar ist irreführend, könnten Sie ihn bitte entweder korrigieren oder entfernen, danke.
0 Stimmen
Angemessene Antwort sollte sein Magnus Antwort
0 Stimmen
Ideal wäre eine Lösung, bei der ein Hotkey die Kommentare entweder für die Zeile, auf der der Cursor steht, oder für die ausgewählten Zeilen ein- und ausschalten kann. Alles andere ist meiner Meinung nach zu viel Aufwand.