Wie lösche ich alle Leerzeichen bis zum ersten Nicht-Leerzeichen?


7

Ich suche nach einer Emacs-Funktion, die alle Leerzeichen von der Cursorposition (einschließlich Zeilenumbrüchen) bis zum ersten Nicht-Leerzeichen löscht.

Wenn sich mein Cursor beispielsweise am Ende der ersten Zeile befindet:

main(arg1,
     arg2)

Die Löschfunktion würde ergeben:

main(arg1,arg2)

Antworten:


7

Möglicherweise finden Sie das hungry-deletePaket hilfreich. Ich persönlich bin verpflichtet C-cdelete, Leerzeichen nach Punkt und C-cbackspaceLeerzeichen vor Punkt wie folgt zu löschen

(global-set-key (kbd "C-c <backspace>") 'hungry-delete-backward)
(global-set-key (kbd "C-c <deletechar>") 'hungry-delete-forward)

Update: Stand 12.2018 Funktionsdefinitionen geändert daher:

(global-set-key (kbd "C-c <backspace>") 'c-hungry-delete-backward)
(global-set-key (kbd "C-c <deletechar>") 'c-hungry-delete-forward)

4

Ich benutze das ziemlich oft:

(defun join-line* ()
  "Join this line with the next line deleting extra white space."
  (interactive)
  (join-line t))

(global-set-key (kbd "M-j") #'join-line*) ;; just key binding I use…

Ich denke, es wäre schön zu bemerken, dass dies Vanille entspricht C-u M-^.
Basil

Beachten Sie auch, dass join-line(aka delete-indentation) oft ein Leerzeichen nach dem Punkt hinterlässt.
Basil

2

Noch eine andere Lösung

(defun foo ()
  (interactive)
  (delete-region (point)
                 (+ (save-excursion (skip-chars-forward " \n"))
                    (point))))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.