Next: , Previous: Functions for Key Lookup, Up: Keymaps   [Contents][Index]


21.9 ¥­¡¼¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ÎÊѹ¹

¥­¡¼¤òºÆ¥Ð¥¤¥ó¥É¤¹¤ë¤Ë¤Ï¡¢¥­¡¼¥Þ¥Ã¥×¤Ë¤ª¤±¤ëÅö³º¹àÌܤòÊѹ¹¤·¤Þ¤¹¡£ ¥°¥í¡¼¥Ð¥ë¥­¡¼¥Þ¥Ã¥×¤Ç¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÊѹ¹¤¹¤ë¤È¡¢ ¤½¤ÎÊѹ¹¤Ï¤¹¤Ù¤Æ¤Î¥Ð¥Ã¥Õ¥¡¤Ç¸ú²Ì¤òȯ´ø¤·¤Þ¤¹ ¡Ê¤¿¤À¤·¡¢¥í¡¼¥«¥ë¥­¡¼¥Þ¥Ã¥×¤Ç¥°¥í¡¼¥Ð¥ë¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ò ±£¤·¤Æ¤¤¤ë¥Ð¥Ã¥Õ¥¡¤Ç¤ÏľÀܤθú²Ì¤Ï¤Ê¤¤¡Ë¡£ ¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Î¥í¡¼¥«¥ë¥­¡¼¥Þ¥Ã¥×¤ÇÊѹ¹¤¹¤ë¤È¡¢ Ä̾Ʊ¤¸¥á¥¸¥ã¡¼¥â¡¼¥É¤ò»È¤Ã¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥Ð¥Ã¥Õ¥¡¤Ë±Æ¶Á¤·¤Þ¤¹¡£ ´Ø¿ôglobal-set-key¤älocal-set-key¤Ï¡¢ ¤³¤ì¤é¤ÎÁàºî¤ò¹Ô¤¦¤¿¤á¤ÎÊØÍø¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ç¤¹ ¡Êsee Key Binding Commands¡Ë¡£ ¤è¤êÈÆÍѤδؿôdefine-key¤ò»È¤¦¤³¤È¤â¤Ç¤­¤Þ¤¹¤¬¡¢ Êѹ¹ÂоݤΥ­¡¼¥Þ¥Ã¥×¤òÌÀ¼¨¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¥­¡¼Îó¤ÎºÆ¥Ð¥¤¥ó¥É¤ò½ñ¤¯¤È¤­¤Ë¤Ï¡¢ ¥³¥ó¥È¥í¡¼¥ëʸ»ú¤ä¥á¥¿Ê¸»ú¸þ¤±¤Î ÆÃÊ̤ʥ¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ò»È¤¦¤Î¤¬¤è¤¤¤Ç¤¹¡Êsee String Type¡Ë¡£ ¹½Ê¸‘\C-’¤Ï¸å³¤Îʸ»ú¤¬¥³¥ó¥È¥í¡¼¥ëʸ»ú¤Ç¤¢¤ë¤³¤È¡¢ ¹½Ê¸‘\M-’¤Ï¸å³¤Îʸ»ú¤¬¥á¥¿Ê¸»ú¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢Ê¸»úÎó"\M-x"¤Ïñ°ì¤ÎM-x¤ò´Þ¤à¤ÈÆÉ¤Þ¤ì¡¢ "\C-f"¤Ïñ°ì¤ÎC-f¤ò´Þ¤à¤ÈÆÉ¤Þ¤ì¡¢ "\M-\C-x"¤ä"\C-\M-x"¤Ï¤¤¤º¤ì¤âñ°ì¤ÎC-M-x¤ò ´Þ¤à¤ÈÆÉ¤Þ¤ì¤Þ¤¹¡£ Ʊ¤¸¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ï¡¢ ¥Ù¥¯¥È¥ë¤Ç¤â»È¤¨¡¢Ê¸»úÎ󤬵ö¤µ¤ì¤Ê¤¤Â¾¤Î¾ìÌ̤Ǥâ»È¤¨¤Þ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢‘[?\C-\H-x home]’¤Ç¤¹¡£ See Character Type¡£

¥­¡¼¤òÄêµÁ¤·¤¿¤êõº÷¤¹¤ë´Ø¿ô¤Ç¤Ï¡¢ ¥Ù¥¯¥È¥ë¤Çɽ¤·¤¿¥­¡¼ÎóÆâ¤Î¥¤¥Ù¥ó¥È·¿¤ËÂФ·¤ÆÊ̤ι½Ê¸¡¢ ¤Ä¤Þ¤ê¡¢½¤¾þ»Ò̾¤È1¤Ä¤Î´ðËÜ¥¤¥Ù¥ó¥È¡Êʸ»ú¤ä¥Õ¥¡¥ó¥¯¥·¥ç¥ó¥­¡¼Ì¾¡Ë ¤«¤éÀ®¤ë¥ê¥¹¥È¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢(control ?a)¤Ï?\C-a¤ËÅù²Á¤Ç¤¢¤ê¡¢ (hyper control left)¤ÏC-H-left¤ËÅù²Á¤Ç¤¹¡£ ¤³¤Î¤è¤¦¤Ê¥ê¥¹¥È¤ÎÍøÅÀ¤Î1¤Ä¤Ï¡¢ ¥³¥ó¥Ñ¥¤¥ëºÑ¤ß¤Î¥Õ¥¡¥¤¥ë¤Ë½¤¾þ¥Ó¥Ã¥È¤Î¿ôÃͤ¬¸½¤ì¤Ê¤¤¤³¤È¤Ç¤¹¡£

°Ê²¼¤Î´Ø¿ô¤Ç¤Ï¡¢keymap¤¬¥­¡¼¥Þ¥Ã¥×¤Ç¤Ê¤«¤Ã¤¿¤ê¡¢ key¤¬¥­¡¼Îó¤òɽ¤¹Ê¸»úÎó¤ä¥Ù¥¯¥È¥ë¤Ç¤Ê¤¤¤È¡¢¥¨¥é¡¼¤òÄÌÃΤ·¤Þ¤¹¡£ ¥ê¥¹¥È¤Ç¤¢¤ë¥¤¥Ù¥ó¥È¤Î¾Êά·Á¤È¤·¤Æ¥¤¥Ù¥ó¥È·¿¡Ê¥·¥ó¥Ü¥ë¡Ë¤ò»È¤¨¤Þ¤¹¡£

Function: define-key keymap key binding

¤³¤Î´Ø¿ô¤Ï¡¢¥­¡¼¥Þ¥Ã¥×keymap¤Ë¤ª¤¤¤Æ ¥­¡¼key¤ËÂФ¹¤ë¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÀßÄꤹ¤ë¡£ ¡Êkey¤¬Ê£¿ô¥¤¥Ù¥ó¥È¤Î¾ì¹ç¡¢ keymap¤«¤éé¤Ã¤¿Ê̤Υ­¡¼¥Þ¥Ã¥×¤¬¼ÂºÝ¤Ë¤ÏÊѹ¹¤µ¤ì¤ë¡£¡Ë °ú¿ôbinding¤ÏǤ°Õ¤ÎLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë¤¬¡¢ ¤¢¤ë¼ï¤Î·¿¤Î¤â¤Î¤À¤±¤¬°ÕÌ£¤ò»ý¤Ä¡£ ¡Ê°ÕÌ£¤Î¤¢¤ë·¿¤Î°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢Key Lookup¤ò»²¾È¡£¡Ë define-key¤¬ÊÖ¤¹ÃͤÏbinding¤Ç¤¢¤ë¡£

key¤Î¤ª¤Î¤ª¤Î¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Ï¥×¥ì¥Õ¥£¥Ã¥¯¥¹¥­¡¼¤Ç¤¢¤ë ¡Ê¥­¡¼¥Þ¥Ã¥×¤Ë¤¢¤ë¡Ë¤«Ì¤ÄêµÁ¤Ç¤¢¤ë¤³¤È¡£ ¤µ¤â¤Ê¤±¤ì¤Ð¡¢¥¨¥é¡¼¤òÄÌÃΤ¹¤ë¡£ key¤Î¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Ë̤ÄêµÁ¤Ê¤â¤Î¤¬¤¢¤ë¤È¡¢ define-key¤ÏÅö³º¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤ò¥×¥ì¥Õ¥£¥Ã¥¯¥¹¥­¡¼¤ÈÄêµÁ¤·¡¢ key¤Î»Ä¤ê¤ÎÉôʬ¤ò»ØÄê¤É¤ª¤ê¤ËÄêµÁ¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£

keymap¤Ëkey¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤¬¤Ê¤±¤ì¤Ð¡¢ ¿·¤¿¤Ê¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òkeymap¤ÎÀèÆ¬¤ËÄɲ乤롣 ¥­¡¼¥Þ¥Ã¥×Æâ¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Î½ç½ø¤Ï¿¤¯¤Î¾ì¹ç´Ø·¸¤Ê¤¤¤¬¡¢ ¥á¥Ë¥å¡¼¥­¡¼¥Þ¥Ã¥×¤Ç¤Ï°ÕÌ£¤ò»ý¤Ä¡Êsee Menu Keymaps¡Ë¡£

Á¤ʥ­¡¼¥Þ¥Ã¥×¤òºîÀ®¤·¡¢¤½¤³¤Ë¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òºî¤ëÎã¤ò¼¨¤·¤Þ¤¹¡£

(setq map (make-sparse-keymap))
    ⇒ (keymap)
(define-key map "\C-f" 'forward-char)
    ⇒ forward-char
map
    ⇒ (keymap (6 . forward-char))
;; C-xÍѤÎÁ¤ʥµ¥Ö¥Þ¥Ã¥×¤òºî¤ê¡¢
;; ¤½¤³¤Ëf¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÆþ¤ì¤ë
(define-key map "\C-xf" 'forward-word)
    ⇒ forward-word
map
⇒ (keymap 
    (24 keymap                ; C-x
        (102 . forward-word)) ;      f
    (6 . forward-char))       ; C-f
;; C-p¤òctl-x-map¤Ë¥Ð¥¤¥ó¥É¤¹¤ë
(define-key map "\C-p" ctl-x-map)
;; ctl-x-map
⇒ [nil … find-file … backward-kill-sentence] 
;; ctl-x-map¤Ç¡¢C-f¤òfoo¤Ë¥Ð¥¤¥ó¥É¤¹¤ë
(define-key map "\C-p\C-f" 'foo)
⇒ 'foo
map
⇒ (keymap     ; foo¤Ïctl-x-map¤ÎÃæ¤Ë¤¢¤ë
    (16 keymap [nil … foo … backward-kill-sentence])
    (24 keymap 
        (102 . forward-word))
    (6 . forward-char))

C-p C-f¤ËÂФ¹¤ë¿·¤·¤¤¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ï¡¢ ¼ÂºÝ¤Ë¤Ïctl-x-map¤Î¹àÌܤòÊѹ¹¤·¤Æ¤¤¤Æ¡¢ ¤³¤ì¤Ë¤Ï¡¢C-p C-f¤È¥Ç¥Õ¥©¥ë¥È¤Î¥°¥í¡¼¥Ð¥ë¥­¡¼¥Þ¥Ã¥×Æâ¤Î C-x C-f¤ÎξÊý¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òÊѹ¹¤¹¤ë¸ú²Ì¤¬¤¢¤ë ¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

Function: substitute-key-definition olddef newdef keymap &optional oldmap

¤³¤Î´Ø¿ô¤Ï¡¢keymapÆâ¤Îolddef¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤¿¥­¡¼¤Î olddef¤ònewdef¤ËÃÖ¤­´¹¤¨¤ë¡£ ¤¤¤¤¤«¤¨¤ë¤È¡¢olddef¤Ë½Ð²ñ¤¦¤¿¤Ó¤Ë¤½¤ì¤ònewdef¤ËÃÖ¤­´¹¤¨¤ë¡£ ´Ø¿ô¤Ïnil¤òÊÖ¤¹¡£

¤¿¤È¤¨¤Ð¡¢Emacs¤Îɸ½à¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ç¤¢¤ë¤È¡¢ ¤Ä¤®¤ÎÎã¤ÏC-x C-f¤òºÆÄêµÁ¤¹¤ë¡£

(substitute-key-definition 
 'find-file 'find-file-read-only (current-global-map))

oldmap¤¬nil°Ê³°¤Ç¤¢¤ë¤È¡¢ ¤½¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ë¤è¤Ã¤Æ¤É¤Î¥­¡¼¤òºÆ¥Ð¥¤¥ó¥É¤¹¤ë¤«¤ò·èÄꤹ¤ë¡£ ºÆ¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤Ïkeymap¤Ç¹Ô¤¤¡¢oldmap¤Ç¤Ï¤Ê¤¤¡£ ¤Ä¤Þ¤ê¡¢Ê̤Υ­¡¼¥Þ¥Ã¥×Æâ¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ÎÀ©¸æ¤Î¤â¤È¤Ë¡¢ ¥­¡¼¥Þ¥Ã¥×¤òÊѹ¹¤Ç¤­¤ë¡£ ¤¿¤È¤¨¤Ð¡¢

(substitute-key-definition
  'delete-backward-char 'my-funny-delete
  my-map global-map)

¤Ç¤Ï¡¢¥°¥í¡¼¥Ð¥ë¤Ë¤Ïɸ½à¤Îºï½ü¥³¥Þ¥ó¥É¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤Æ¤¤¤ë¥­¡¼¤ËÂФ·¤Æ¤Ï¡¢ my-map¤Ç¤ÏÆÃÊ̤ʺï½ü¥³¥Þ¥ó¥É¤Ë¤¹¤ë¡£

Êѹ¹Á°¸å¤Î¥­¡¼¥Þ¥Ã¥×¤ò°Ê²¼¤Ë¼¨¤¹¡£

(setq map '(keymap 
            (?1 . olddef-1) 
            (?2 . olddef-2) 
            (?3 . olddef-1)))
⇒ (keymap (49 . olddef-1) (50 . olddef-2) (51 . olddef-1))
(substitute-key-definition 'olddef-1 'newdef map)
⇒ nil
map
⇒ (keymap (49 . newdef) (50 . olddef-2) (51 . newdef))
Function: suppress-keymap keymap &optional nodigits

¤³¤Î´Ø¿ô¤Ï¡¢´°Á´¤Ê¥­¡¼¥Þ¥Ã¥×keymap¤ÎÆâÍÆ¤òÊѹ¹¤·¡¢ ¤¹¤Ù¤Æ¤Î°õ»úʸ»ú¤ò̤ÄêµÁ¤Ë¤¹¤ë¡£ ¤è¤êÀµ³Î¤Ë¤Ï¡¢¤½¤ì¤é¤Ë¥³¥Þ¥ó¥Éundefined¤ò¥Ð¥¤¥ó¥É¤¹¤ë¡£ ¤³¤ì¤Ë¤è¤ê¡¢Ä̾ï¤Î¥Æ¥­¥¹¥È¤ÎÁÞÆþ¤òÉÔ²Äǽ¤Ë¤¹¤ë¡£ suppress-keymap¤Ïnil¤òÊÖ¤¹¡£

nodigits¤¬nil¤Ç¤¢¤ë¤È¡¢ suppress-keymap¤Ï¡¢ ¿ô»úʸ»ú¤Ç¤Ïdigit-argument¤ò¼Â¹Ô¤·¡¢ -¤Ç¤Ïnegative-argument¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤ËÄêµÁ¤¹¤ë¡£ ¤µ¤â¤Ê¤±¤ì¤Ð¡¢¤½¤ì¤é¤â¾¤Î°õ»úʸ»ú¤ÈƱÍͤË̤ÄêµÁ¤Ë¤¹¤ë¡£

´Ø¿ôsuppress-keymap¤Ï¡¢ yank¤äquoted-insert¤Ê¤É¤Î¥³¥Þ¥ó¥É¤òÍÞÀ©¤·¤Ê¤¤¤Î¤Ç¡¢ ¥Ð¥Ã¥Õ¥¡¤òÊѹ¹ÉÔ²Äǽ¤Ë¤¹¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£ ¥Ð¥Ã¥Õ¥¡¤ÎÊѹ¹¤ò¶Ø»ß¤¹¤ë¤Ë¤Ï¡¢¥Ð¥Ã¥Õ¥¡¤òÆÉ¤ß½Ð¤·ÀìÍѤˤ¹¤ë ¡Êsee Read Only Buffers¡Ë¡£

¤³¤Î´Ø¿ô¤Ïkeymap¤òÊѹ¹¤¹¤ë¤¿¤á¡¢ ÆÉ¼Ô¤Ï¡¢Ä̾¿·¤¿¤ËºîÀ®¤·¤¿¥­¡¼¥Þ¥Ã¥×¤ËÂФ·¤Æ»È¤¦¤Ç¤¢¤í¤¦¡£ ¤¢¤ëÌÜŪ¤Ç»ÈÍÑÃæ¤Î´û¸¤Î¥­¡¼¥Þ¥Ã¥×¤òÁàºî¤¹¤ë¤È¡¢ ÌäÂê¤ò°ú¤­µ¯¤³¤¹¤³¤È¤¬¤¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢global-map¤ËŬÍѤ¹¤ë¤ÈEmacs¤ò¤Û¤È¤ó¤É»ÈÍÑÉÔǽ¤Ë¤·¤Æ¤·¤Þ¤¦¡£

¿¤¯¤Î¾ì¹ç¡¢¥Æ¥­¥¹¥È¤ÎÁÞÆþ¤¬É¬Íפʤ¯¥Ð¥Ã¥Õ¥¡¤òÆÉ¤ß½Ð¤·ÀìÍѤǻȤ¦ rmail¤ädired¤Ê¤É¤Î¥â¡¼¥É¤Î¥í¡¼¥«¥ë¥­¡¼¥Þ¥Ã¥×¤Î½é´ü²½¤Ë suppress-keymap¤ò»È¤¦¡£ ¥Õ¥¡¥¤¥ëemacs/lisp/dired.el¤«¤é»ý¤Ã¤Æ¤­¤¿Îã¤ò¼¨¤¹¡£ ¤³¤ì¤Ï¡¢dired¥â¡¼¥ÉÍÑ¤Î¥í¡¼¥«¥ë¥­¡¼¥Þ¥Ã¥×¤ÎÀßÄêÊýË¡¤Ç¤¢¤ë¡£

(setq dired-mode-map (make-keymap))
(suppress-keymap dired-mode-map)
(define-key dired-mode-map "r" 'dired-rename-file)
(define-key dired-mode-map "\C-d" 'dired-flag-file-deleted)
(define-key dired-mode-map "d" 'dired-flag-file-deleted)
(define-key dired-mode-map "v" 'dired-view-file)
(define-key dired-mode-map "e" 'dired-find-file)
(define-key dired-mode-map "f" 'dired-find-file)
…

Next: , Previous: Functions for Key Lookup, Up: Keymaps   [Contents][Index]