¿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)

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)

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…

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))))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.