Como excluir todo o espaço em branco até o primeiro caractere que não seja em espaço em branco?


7

Estou procurando uma função emacs que exclua todos os espaços em branco da posição do cursor (incluindo novas linhas) até o primeiro caractere que não seja espaço em branco.

Por exemplo, se meu cursor estiver posicionado no final da primeira linha:

main(arg1,
     arg2)

A função de exclusão resultaria em:

main(arg1,arg2)

Respostas:


7

Você pode achar o hungry-deletepacote útil. Eu, pessoalmente, vinculo C-cdeletea excluir espaços em branco após o ponto e C-cbackspaceexcluir espaços em branco antes do ponto,

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

update: a partir de 12.2018, as definições de função foram alteradas:

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

4

Eu uso isso com bastante frequência:

(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…

Eu acho que seria bom notar que isso é equivalente a baunilha C-u M-^.
Basil

Observe também que join-line(aka delete-indentation) geralmente deixa um caractere de espaço após ponto.
Basil

2

Mais uma solução

(defun foo ()
  (interactive)
  (delete-region (point)
                 (+ (save-excursion (skip-chars-forward " \n"))
                    (point))))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.