2012-09-12 2 views
3

나는 여러 가지 다른 방법으로이 작업을 시도했지만 성공하지 못했습니다. C++ 파일에서 작업하는 동안 M-d 및 C-d 기능 (단어 삭제, 문자 삭제)을 각각 전환하려고합니다.단어를 삭제하기 위해 이맥스 "C-d"를 다시 바인딩하십시오.

나를 도와 주실 수 있습니까? CC Hooks - CC Mode Manulal에서

+0

이 질문에 이미 정답되었지만, 난 그냥 당신이 키 바인딩 그들이 길을 떠나 고려할 수 있음을 언급하고 싶습니다. 그것들을 바꾸기위한 객관적인 이점은 없으며, 근육 기억력을 훈련한다면 - 그리 오래 걸리지 않습니다! - 주요 모드와 관계없이 Emacs에서 일관된 동작을 얻습니다. – Thomas

답변

2
(add-hook 'c-initialization-hook 
      (lambda() 
      (define-key c++-mode-map "\C-d" 'kill-word) 
      (define-key c++-mode-map "\M-d" 'c-electric-delete-forward))) 

:

변수 : 한 번만 이맥스 세션 당 C-초기화 훅

후크 실행, CC 모드가 초기화됩니다. 이것은 모든 CC 모드 키 맵에서 키 바인딩을 변경 (또는 새 바인딩 추가)하기 좋은 장소입니다. Sample .emacs File을 참조하십시오.

+2

이 작업을 수행하지만 두 가지 문제점이 있습니다. 먼저 C++로 새 버퍼를 열 때마다 동일한 코드를 실행합니다. 이러한 종류의 코드는 일반적으로 C++ 모드에 대해 한 번만 실행하는 것이 좋습니다. 두 번째로'kbd '를 사용하지 않기 때문에 읽기가 쉽지 않고 에러가 발생하기 쉽다. –

+1

@NicolasDudebout 의견을 보내 주셔서 감사합니다. 나는'c-initialization-hook'을 사용하도록 게시물을 갱신했습니다. 이것은'C++ - mode-hook' 대신 Emacs 세션 당 한 번만 실행됩니다. – dkim

+0

감사합니다 모두 매우 –

1
(eval-after-load "cc-mode" 
    '(progn 
    (define-key c++-mode-map (kbd "C-d") 'kill-word) 
    (define-key c++-mode-map (kbd "M-d") 'delete-char))) 
+0

의견을 보내 주셔서 감사합니다 –

관련 문제