¿Cómo eliminar todos los espacios en blanco hasta el primer carácter que no sea un espacio en blanco?

7

Estoy buscando una función emacs que elimine todo el espacio en blanco de la posición del cursor (incluidas las nuevas líneas) hasta el primer carácter que no sea un espacio en blanco.

Por ejemplo, si mi cursor está posicionado al final de la primera línea:

main(arg1,
     arg2)

La función de eliminación daría como resultado:

main(arg1,arg2)
Jeff Bauer
fuente

Respuestas:

7

Puede encontrar el hungry-deletepaquete útil. Personalmente me comprometo C-cdeletea eliminar espacios en blanco después del punto, y C-cbackspaceeliminar espacios en blanco antes del punto de esta manera

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

actualización: a partir de 12.2018 las definiciones de funciones cambiaron, por lo tanto:

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

Lo uso con bastante frecuencia:

(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…
Mark Karpov
fuente
Creo que sería bueno notar que esto es equivalente a la vainilla C-u M-^.
Albahaca
Tenga en cuenta también que join-line(aka delete-indentation) a menudo deja un carácter de espacio después del punto.
Albahaca
2

Otra solución

(defun foo ()
  (interactive)
  (delete-region (point)
                 (+ (save-excursion (skip-chars-forward " \n"))
                    (point))))
Nombre
fuente