답변:
설명서에 따르면 :
<C-delete>
에서 대화 형으로 컴파일 된 Lisp 함수 인 kill-word (글로벌 맵에 있음) 명령을 실행합니다‘simple.el’
.에 바인딩되어
<C-delete>, M-d
있습니다.(킬-워드 ARG)
단어가 끝날 때까지 문자를 앞으로 죽입니다. 인수 ARG를 사용하여 여러 번 수행하십시오.
이제 소스 코드를 찾아 보자.
(defun kill-word (arg)
"Kill characters forward until encountering the end of a word.
With argument ARG, do this that many times."
(interactive "p")
(kill-region (point) (progn (forward-word arg) (point))))
그런 다음 kill-region
함수 의 설명서에서 다음 을 찾습니다.
포인트와 마크 사이의 텍스트를 죽입니다 ( "잘라 내기").
This deletes the text from the buffer and saves it in the kill ring
. [yank] 명령은 거기서부터 검색 할 수 있습니다. (지역을 죽이지 않고 저장하려면 [kill-ring-save]를 사용하십시오.)[...]
Lisp 프로그램은 텍스트를 죽이기 위해이 기능을 사용해야합니다. (텍스트를 삭제하려면를 사용하십시오
delete-region
.)
이제 더 나아가고 싶다면 킬 링에 복사하지 않고 삭제할 때 사용할 수있는 기능입니다.
(defun my-delete-word (arg)
"Delete characters forward until encountering the end of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
(interactive "p")
(delete-region
(point)
(progn
(forward-word arg)
(point))))
(defun my-backward-delete-word (arg)
"Delete characters backward until encountering the beginning of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
(interactive "p")
(my-delete-word (- arg)))
(defun my-delete-line ()
"Delete text from current position to end of line char.
This command does not push text to `kill-ring'."
(interactive)
(delete-region
(point)
(progn (end-of-line 1) (point)))
(delete-char 1))
(defun my-delete-line-backward ()
"Delete text between the beginning of the line to the cursor position.
This command does not push text to `kill-ring'."
(interactive)
(let (p1 p2)
(setq p1 (point))
(beginning-of-line 1)
(setq p2 (point))
(delete-region p1 p2)))
; bind them to emacs's default shortcut keys:
(global-set-key (kbd "C-S-k") 'my-delete-line-backward) ; Ctrl+Shift+k
(global-set-key (kbd "C-k") 'my-delete-line)
(global-set-key (kbd "M-d") 'my-delete-word)
(global-set-key (kbd "<M-backspace>") 'my-backward-delete-word)
Ergo의 의례
Emacs 24는 구성이 없으므로 킬 링에 추가하지 않고 텍스트를 선택한 다음 Backspace또는 을 눌러 텍스트를 삭제할 수 있습니다 Delete. 마크가 활성화되면이 키들은 커서 앞 / 뒤의 문자를 삭제하는 대신 영역을 삭제합니다.
즉, 삭제하려는 텍스트의 한쪽 끝으로 이동하고 Ctrl+를 누르고 Space다른 쪽 끝으로 이동 한 다음 Backspace(또는 Delete)을 눌러 강조 표시된 영역을 삭제하십시오. 또는 한쪽 끝으로 이동하고 Shift이동 키를 사용하여 다른 쪽 끝으로 이동 한 상태에서을 누릅니다 Backspace.
나는 같은 문제를 겪었고이 방법으로 더 쉽게 해결했다.
(global-set-key (kbd "<backspace>")
'(lambda () (interactive) (backward-delete-char-untabify 1 nil)))
호출하면 (backward-delete-char-untabify 1 nil)
Emacs가 하나의 문자 (이것은 1
매개 변수 임) 를 역으로 삭제 하고 링에서 복사하는 것 (매개 변수) 으로 돌아 가지 않도록 지시 nil
합니다. 매개 변수가있는 함수를 키에 바인딩하기 때문에 람다 (즉 익명) 함수가 필요합니다.
undo
. 그러나 야생 추측.