最初の非空白文字までのすべての空白を削除するにはどうすればよいですか?


7

空白以外の最初の文字までのカーソル位置(改行を含む)からすべての空白を削除するemacs関数を探しています。

たとえば、カーソルが最初の行の末尾にある場合:

main(arg1,
     arg2)

削除機能は次の結果になります。

main(arg1,arg2)

回答:


7

あなたはhungry-deleteパッケージが役に立つかもしれません。私は個人的にC-cdelete、ポイントの後ろの空白を削除し、ポイントのC-cbackspace前の空白を削除するようにバインドします

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

更新:12.2018以降、関数定義が次のように変更されました。

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

4

私はこれをかなり頻繁に使用します:

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

これはバニラと同等であることに注意してくださいC-u M-^
バジル

join-line(別名delete-indentation)は、多くの場合、ポイントの後に1つのスペース文字を残すことに注意してください。
バジル

2

さらに別の解決策

(defun foo ()
  (interactive)
  (delete-region (point)
                 (+ (save-excursion (skip-chars-forward " \n"))
                    (point))))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.