2014-05-11 4 views
5

Ich versuche, Folgendes zu implementieren: Duplizieren Sie die aktuell ausgewählte Region oder eine Zeile (wenn keine Auswahl vorhanden ist) und kommentieren Sie die ursprüngliche Region mit Hilfe von comment-or-uncomment-region-or-line.Emacs kopieren Region/Zeile und Kommentar zur gleichen Zeit

Ich dachte, ich könnte kill-region gefolgt von yank verwenden, aber dann ist meine ursprüngliche Auswahl verloren, so kann ich nicht kommentieren. Wenn ich auf der anderen Seite zuerst kommentiere, werde ich beide Kopien meiner Region auskommentieren lassen. Die andere Idee, die ich habe (was ich denke, ist besser, weil ich den bösen Modus verwende) ist, evil-yank und dann evil-visual-restore zu verwenden, um die Auswahl wiederherzustellen, so dass ich es auskommentieren kann. Aber ich kann nicht herausfinden, welche Argumente an evil-yank übergeben werden, um die ausgewählte Region anzugeben.

Was fehlt mir hier?

Antwort

5

Die Hauptsache, die Sie vermissen, ist die Funktion copy-region-as-kill.

(defun copy-and-comment-region (beg end &optional arg) 
    "Duplicate the region and comment-out the copied text. 
See `comment-region' for behavior of a prefix arg." 
    (interactive "r\nP") 
    (copy-region-as-kill beg end) 
    (goto-char end) 
    (yank) 
    (comment-region beg end arg)) 
+0

Danke! Wie kann ich danach eine Zeile nach unten verschieben? Ich habe versucht (Next-Line 1), aber es scheint nicht zu funktionieren. – egdmitry

+0

Siehe Funktion 'Forward-Line'. – Drew

+0

Es funktioniert nicht so gut. Ich vermute, dass es mit dem bösen Modus zusammenhängt, wenn ich die Region mit 'V' auswähle, funktioniert' forward-line' nicht. – egdmitry

Verwandte Themen