2017-09-02 29 views
1

我只想C-瓦特M-瓦特修改殺環,與該系統的剪貼板[C-C(副本),C-X(切口)]沿。Emacs的 - 如何改變殺刪除?

我用M-dM-DEL時候,但我不希望通過每一次M-Ÿ猛拉,然後循環。

我看着the emacs manual但它並沒有回答我的問題。

例如:我想將M-d「kill-word」綁定到「delete-word」,但「delete-word」不存在。我如何會這樣呢?任何幫助,將不勝感激。

+1

見的Emacs維基,頁面[BackwardDeleteWord](https://www.emacswiki.org/emacs/BackwardDeleteWord)。 – Drew

回答

1

從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

我想你想使用delete-region而不是kill-region,所以文本沒有保存在kill-ring中,例如。沿線的東西

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

我做了一個宏,將任何kill命令更改爲刪除命令。

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

我使用了類似的宏複製。

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