2017-09-02 1 views
1

Ich mag C-w und M-w den Kill-Ring zu ändern, zusammen mit der Zwischenablage des Systems [C-c (Kopie), C-x (Schnitt)].Emacs - Wie kill zu löschen ändern? nur

Ich benutze M-d und M-DEL oft, aber ich will nicht reißen und dann Zyklus durch M-y jedes Mal.

Ich schaute auf the emacs manual, aber es beantwortet meine Frage nicht.

Beispiel: Ich möchte binden M-d "kill-word" zu "delete-word", aber "delete-word" existiert nicht. Wie mache ich es so? Jede Hilfe wäre willkommen.

+1

Siehe Emacs Wiki, Seite [BackwardDeleteWord] (https://www.emacswiki.org/emacs/BackwardDeleteWord). – Drew

Antwort

1

Von EmacsWiki https://www.emacswiki.org/emacs/BackwardDeleteWord

(defun delete-word (arg) 
    "Delete characters forward until encountering the end of a word. 
With argument, do this that many times." 
    (interactive "p") 
    (if (use-region-p) 
     (delete-region (region-beginning) (region-end)) 
    (delete-region (point) (progn (forward-word arg) (point))))) 

(defun backward-delete-word (arg) 
    "Delete characters backward until encountering the end of a word. 
With argument, do this that many times." 
    (interactive "p") 
    (delete-word (- arg))) 

(global-set-key (read-kbd-macro "<M-DEL>") 'backward-delete-word) 
1

Ich denke, Sie möchten delete-region anstelle von kill-region verwenden, so dass der Text nicht im Kill-Ring gespeichert wird, z. etwas in Richtung

(defun my-delete-word (start) 
    (interactive "d") 
    (backward-word) 
    (delete-region (point) start)) 
0

Ich machte ein Makro, um jeden Kill-Befehl in einen Löschbefehl zu ändern.

(defmacro delete-instead-of-kill (&rest body) 
    "Replaces `kill-region' with `delete-region' in BODY." 
    `(cl-letf (((symbol-function 'kill-region) 
       (lambda (beg end &optional region) 
       ;; FIXME: account for region arg 
       (delete-region beg end)))) 
    ,@body)) 

(defun delete-word (&optional arg) 
    "Like `kill-word', but deletes instead of killing." 
    (interactive "p") 
    (delete-instead-of-kill (kill-word arg))) 

Ich benutze ein ähnliches Makro zum Kopieren.

(defmacro copy-instead-of-kill (&rest body) 
    "Replaces `kill-region' with `kill-ring-save' in BODY." 
    `(cl-letf (((symbol-function 'kill-region) 
       (lambda (beg end &optional region) 
       (kill-ring-save beg end region) 
       (setq this-command 'kill-region)))) 
    ,@body)) 
Verwandte Themen