back-kill-word bỏ qua khoảng trắng, có phiên bản nào thân thiện hơn không?


7

Emac backward-kill-wordcó xu hướng xóa nhiều hơn tôi muốn.
Ví dụ: khi tôi nhấn xóa nhiều lần về điều này:

(key-chord "qf" 'helm-org-in-buffer-headings)   ;heading search. |

Tôi có:

1. (key-chord "qf" 'helm-org-in-buffer-headings)   ;heading|
2. (key-chord "qf" 'helm-org-in-buffer-headings)   ;|
3. (key-chord "qf" 'helm-org-in-buffer-|   <<< too much deletion. 

Tôi mong đợi điều này trong bước thứ 3:

3. (key-chord "qf" 'helm-org-in-buffer-headings)|

Tôi muốn biết: - Có một triết lý đằng sau việc xóa nhiều hơn những gì muốn không?
- Tôi có thể làm cho từ lùi-xóa-từ trở nên thân thiện hơn không? Tức là, loại bỏ khoảng trắng nhưng đừng giết 'quá nhiều?

EDIT Tôi không thực sự biết "tôi muốn gì". Có thể làm cho nó giống với các chức năng xóa khác như trong google-keep hoặc các ứng dụng chỉnh sửa văn bản khác.

chỉnh sửa2
Trong thời gian đó, danh sách luật đã sửa chữa chức năng tùy chỉnh của mình hoạt động khá tốt: nhập mô tả liên kết tại đây


2
Rủi ro này được đóng lại là không rõ ràng. Bạn không chỉ định hành vi nào bạn muốn. Chỉ định. backward-kill-wordlàm những gì nó dự định làm. Bạn có thể định nghĩa một lệnh khác để thực hiện "những gì muốn" và không "tiêu diệt" quá nhiều ". Nhưng nếu bạn muốn giúp đỡ với điều đó thì bạn có thể xem xét thực sự chỉ định hành vi bạn đang tìm kiếm.
vẽ

1
Đây là một liên kết đến chức năng xóa từ của riêng tôi, mà bạn có thể quan tâm sửa đổi cho phù hợp với nhu cầu của mình: stackoverflow.com/a/20456861/2112361 Nó không được thiết kế để lưu trữ xóa vào vòng khử, vì vậy tôi gọi nó là xóa chứ không phải giết. Nó không có gì để làm với helm hoặc dây chìa khóa. Hành vi (theo ý kiến ​​của tôi) gần đúng với những gì các bộ xử lý văn bản đã làm trong nhiều năm qua.
luật

@lawlist yah, đây ít nhiều là những gì tôi đang tìm kiếm, ngoại trừ việc tôi tìm thấy chức năng ở đó không bao quanh và không bắt đầu xóa mọi thứ nếu có khoảng trắng ở cuối?
Leo Ufimtsev

Triết lý của Emacs là luôn đi trước người dùng một bước. Vì vậy, bạn chưa biết.
Politza

@LeoUfimtsev có điều gì bạn không thích về giải pháp tôi cung cấp không?
rekado

Câu trả lời:


4

Hành vi của backward-kill-wordphụ thuộc vào định nghĩa của một "từ" trong chế độ hiện tại. Bạn có thể thay đổi định nghĩa này và các công cụ phá vỡ rủi ro hoặc bạn có thể sửa đổi kill-word.

backward-kill-wordchỉ là kill-wordvới một lập luận tiêu cực; kill-wordkill-regiontrên khu vực được kéo dài bởi điểm và vị trí sau khi chạy (forward-word arg). Thay thế forward-wordtạm thời nên làm thủ thuật.

Ở đây tôi đang tạm thời thay thế forward-wordvới forward-same-syntaxđể đạt được hiệu quả mong muốn trong backward-kill-word(và kill-wordbởi vì tôi giống như những thứ để phù hợp):

(defun my/kill-word-advice (orig-fun &rest args)
  "Replace forward-word with forward-same-syntax."
  (cl-letf (((symbol-function 'forward-word) #'forward-same-syntax))
    (apply orig-fun args)))
(advice-add 'kill-word :around #'my/kill-word-advice)

Bây giờ hành vi là thế này:

1. (key-chord "qf" 'helm-org-in-buffer-headings)   ;heading|
2. (key-chord "qf" 'helm-org-in-buffer-headings)   ;|
3. (key-chord "qf" 'helm-org-in-buffer-headings)   |
4. (key-chord "qf" 'helm-org-in-buffer-headings)|
5. (key-chord "qf" 'helm-org-in-buffer-headings|
5. (key-chord "qf" 'helm-org-in-buffer-|

1
Xin chào, tôi đã thử cách trên, nhưng khi tôi chạy ngược từ giết, tôi vẫn nhận được hành vi cũ. Tôi đang sử dụng Emacs 25.4 với chế độ org mới nhất ..
Leo Ufimtsev

@LeoUfimtsev Tôi thấy bạn cũng đề cập đến 25.4 ở một nơi khác. Ý bạn là 24,5? Hay 24.4?
Kaushal Modi

Hmm, tôi nghĩ rằng tôi đã nhầm lẫn. Ý tôi là 25.0.50.4. Và có thể một tháng trước tôi đã sử dụng 25.0.50.3, nhưng bây giờ tôi đã cập nhật.
Leo Ufimtsev

@rekado Tôi không thể làm việc này trong 24.5.1. Bất kỳ ý tưởng? Thực hiện các advice-addlợi nhuận sexp nil, đó là mong đợi?
Lenar Hoyt

1
Rất có thể là trước tiên bạn kill-wordphải từ chối định nghĩa ban đầu trước khi lời khuyên được áp dụng :( Tôi không biết tại sao lại như vậy. Sẽ hỏi trong danh sách gửi thư.
rekado
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.