Làm cách nào để xóa tất cả các khoảng trắng cho đến ký tự không phải khoảng trắng đầu tiên?


7

Tôi đang tìm kiếm một hàm emacs sẽ xóa tất cả khoảng trắng khỏi vị trí con trỏ (bao gồm cả dòng mới) cho đến ký tự không phải khoảng trắng đầu tiên.

Ví dụ: nếu con trỏ của tôi được định vị ở cuối dòng đầu tiên:

main(arg1,
     arg2)

Chức năng xóa sẽ dẫn đến:

main(arg1,arg2)

Câu trả lời:


7

Bạn có thể tìm thấy các hungry-deletegói hữu ích. Cá nhân tôi liên kết C-cdeleteđể xóa khoảng trắng sau điểm và C-cbackspaceđể xóa khoảng trắng trước điểm như vậy

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

cập nhật: kể từ ngày 12.2018 định nghĩa hàm đã thay đổi:

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

4

Tôi sử dụng điều này khá thường xuyên:

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

Tôi nghĩ sẽ thật tuyệt khi lưu ý rằng điều này tương đương với vani C-u M-^.
Basil

Cũng lưu ý rằng join-line(aka delete-indentation) thường để lại một ký tự khoảng trắng sau điểm.
Basil

2

Một giải pháp khác

(defun foo ()
  (interactive)
  (delete-region (point)
                 (+ (save-excursion (skip-chars-forward " \n"))
                    (point))))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.