Skip to content

Instantly share code, notes, and snippets.

@peccu
Created February 26, 2010 15:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peccu/315801 to your computer and use it in GitHub Desktop.
Save peccu/315801 to your computer and use it in GitHub Desktop.
;; 以下のファイルに,自分なりの解釈をコメントしてみた by peccu
;; http://www.unixuser.org/~ysjj/emacs/lisp/keybind-config.el
;;; keybind-config --- keybind file
;; Copyright (C) 1999-2001 YAMASHITA Junji
;; Author: YAMASHITA Junji <ysjj@unixuser.org>
;; Keywords: config, keybind
;; Version: $Id: keybind-config.el,v 1.21 2002/02/04 08:18:42 ysjj Exp $
;;; Commentary:
;;; Code:
;; C-zから次のキーを呼び出すために変数として宣言
(defvar my-prefix "\C-z" "*Prefix key for my favorite.")
;; create new keymap for custom key-binding
;; これら全ての*-mapに,(keymap)という(空の?)リストを設定する
;; cf.http://www.math.s.chiba-u.ac.jp/~matsu/emacs/mode/key.html#make-sparse-keymap
;; C-z用
(defvar my-map (make-sparse-keymap)
"*Keymap for `my-prefix' commands.")
;; C-c用
(defvar my-ctl-c-map (make-sparse-keymap)
"*Keymap for \\<my-map> C-c commands.")
;; C-x用
(defvar my-ctl-x-map (make-sparse-keymap)
"*Keymap for \\<my-map> C-x commands.")
;; 次の関数の引数に,バインドしたいキーと割り当てる関数を渡すと,
;; キーマップに登録する.
;; たとえば(my-set-key "\C-b." 'browse-url-at-point)
;; は,C-zC-b.にbrowse-url-at-pointを割り当てている
;; (my-c-set-key "\C-l" 'toggle-truncate-lines)
;; は,C-cC-lにtoggle-truncate-linesを割り当てている
;; C-z用
(defsubst my-set-key (key command)
"Give KEY a `my-map' binding as COMMAND."
(define-key my-map key command))
;; C-c用
(defsubst my-c-set-key (key command)
"Give KEY a `my-ctl-c-map' binding as COMMAND."
(define-key my-ctl-c-map key command))
;; C-x用
(defsubst my-x-set-key (key command)
"Give KEY a `my-ctl-x-map' binding as COMMAND."
(define-key my-ctl-x-map key command))
;; modify global keymap
;; グローバルキーを設定する
;; (なんでもっと下に書いていないかはわからん)
;; C-xC-pはprefixというよりも,ctl-x-ctl-p-prefixという関数を呼び出してるんだろうな
(global-set-key [?\C-.] 'other-window)
(global-set-key "\C-x\C-p" 'ctl-x-ctl-p-prefix)
(global-set-key "\C-xb" 'iswitchb-buffer)
(global-set-key "\C-x\C-b" 'ibuffer)
;; define-key the prefixes
;; global-mapにmy-prefixがmy-mapを呼び出すように設定
;; つまりグローバルキーマップでmy-prefix(C-z)がプレフィックスキーとして働くようにして
;; my-mapに登録されているキーバインドがC-zのあとに参照されるようにしている
(define-key global-map my-prefix my-map)
;; C-zC-cでmy-ctl-c-mapを呼び出す(すなわちなんもなしのC-cと同じ)
(my-set-key "\C-c" my-ctl-c-map)
;; C-zC-xでmy-ctl-x-mapを呼び出す(すなわちなんもなしのC-xと同じ)
(my-set-key "\C-x" my-ctl-x-map)
;; C-zC-b.でbrowse-url-at-pointを呼び出す
(my-set-key "\C-b." 'browse-url-at-point)
(my-set-key "\C-bb" 'browse-url-of-buffer)
(my-set-key "\C-bf" 'browse-url-of-file)
(my-set-key "\C-br" 'browse-url-of-region)
(my-set-key "\C-d" 'dired-at-point)
(my-set-key "\C-f" 'find-file-at-point)
(my-set-key "\C-ha" 'apropos-variable)
(my-set-key "\C-he" 'eelll)
(my-set-key "\C-hf" 'find-function)
(my-set-key "\C-hl" 'my-show-message-log)
(my-set-key "\C-hm" 'man)
(my-set-key "\C-hn" 'namazu)
(my-set-key "\C-hs" 'apropos)
(my-set-key "\C-hv" 'find-variable)
(my-set-key "\C-l" 'load-library)
(my-set-key "\C-ma" 'abbrev-mode)
(my-set-key "\C-mb" 'blank-mode)
(my-set-key "\C-mc" 'highlight-changes-mode)
(my-set-key "\C-me" 'enriched-mode)
(my-set-key "\C-mf" 'free-cursor-mode)
(my-set-key "\C-mg" 'glasses-mode)
(my-set-key "\C-m\C-f" 'follow-mode)
(my-set-key "\C-mh" 'hs-minor-mode)
(my-set-key "\C-mi" 'hide-ifdef-mode)
(my-set-key "\C-ml" 'hl-line-mode)
(my-set-key "\C-mm" 'mmm-mode)
(my-set-key "\C-mn" 'setnu-mode)
(my-set-key "\C-mo" 'overwrite-mode)
(my-set-key "\C-m\C-o" 'outline-minor-mode)
(my-set-key "\C-mp" 'picture-mode)
(my-set-key "\C-mr" 'toggle-rot13-mode)
(my-set-key "\C-ms" 'screen-lines-mode)
(my-set-key "\C-mv" 'auto-revert-mode)
;;(my-set-key "\C-m\C-v" 'toggle-viper-mode)
(my-set-key "\C-mw" 'hi-lock-mode)
(my-set-key "\C-m\C-w" 'which-func-mode)
;;(my-set-key "\C-m\M-w" 'wordstar-mode)
;;(my-set-key "\C-o" 'oo-browser) ; also 'outline-minor-mode-prefix
(my-set-key "\C-pb" 'lpr-buffer)
(my-set-key "\C-pr" 'lpr-region)
(my-set-key "\C-p\C-b" 'ps-print-buffer-with-faces)
(my-set-key "\C-p\C-r" 'ps-print-region-with-faces)
(my-set-key "\C-q" 'rename-uniquely)
(my-set-key "\C-r" 'my-isearch-backward-other-window)
(my-set-key "\C-s" 'my-isearch-forward-other-window)
(my-set-key "\C-w" 'delete-region)
(my-set-key "\C-y" 'lookup)
(my-set-key "\C-z" 'repeat)
(my-set-key "[" 'previous-page)
(my-set-key "]" 'next-page)
(my-set-key "\M-*" 'select-tags-table)
(my-set-key "\M-," 'tags-search)
(my-set-key "\M-." 'visit-tags-table)
(my-set-key "\M-/" 'hippie-expand)
(my-set-key "\M-;" 'comment-region)
(my-set-key "\M-g" 'goto-char)
(my-set-key "\M-l" 'ffap-next)
(my-set-key "\M-m" 'ffap-menu)
(my-set-key "\M-s" 'center-line)
(my-set-key [?\M-\C-.] 'tags-apropos)
(my-set-key "\M-\C-r" 'my-isearch-backward-regexp-other-window)
(my-set-key "\M-\C-s" 'my-isearch-forward-regexp-other-window)
(my-set-key "b" 'speedbar-get-focus)
(my-set-key "e" 'toggle-debug-on-error)
(my-set-key "d" 'find-dired)
(my-set-key "g" 'goto-line)
(my-set-key "i" 'imenu)
(my-set-key "k" 'browse-kill-ring)
(my-set-key "l" 'lookup-pattern)
;;(my-set-key "m" 'mmm-mode-map) ; (setq mmm-mode-prefix-key "\C-zm")
(my-set-key "o" 'occur)
(my-set-key "rc" 'compile)
(my-set-key "rg" 'gdb)
(my-set-key "rl" 'run-lisp)
;;(my-set-key "rp" 'run-prolog)
;;(my-set-key "rp" 'run-ps)
(my-set-key "rr" 'run-ruby)
(my-set-key "rs" 'shell)
(my-set-key "rt" 'term)
(my-set-key "sc" 'sort-columns)
(my-set-key "sf" 'sort-fields)
(my-set-key "sj" 'skk-reread-private-jisyo)
(my-set-key "sl" 'sort-lines)
(my-set-key "sn" 'sort-numeric-fields)
(my-set-key "sp" 'sort-paragraphs)
(my-set-key "sr" 'sort-regexp-fields)
(my-set-key "ss" 'skk-save-jisyo)
(my-set-key "sv" 'set-variable)
(my-set-key "t" 'toggle-tab-width)
;; ここはwindow-setup-hook(なにそれ?)を呼び出してる時のキーバインド
;; C-zwhでset-current-frame-heightなど
(add-hook 'window-setup-hook
#'(lambda ()
(when (featurep 'windows)
(my-set-key "wh" 'set-current-frame-height)
(my-set-key "ww" 'set-current-frame-width)
(my-set-key "wc" 'see-you-again)
(my-set-key "wo" 'win:other-frame)
(my-set-key "wr" 'resume-windows))))
(my-set-key "y" 'honyaku-prefix) ; or 'lookup-region
;; ここからは,C-cにつづくキーの設定
(my-c-set-key "\C-c" 'toggle-case-fold-search)
(my-c-set-key "\C-f" 'hexl-find-file)
(my-c-set-key "\C-l" 'toggle-truncate-lines)
(my-c-set-key "\C-n" 'hnf)
(my-c-set-key "\C-r" 'mule-caesar-region)
(my-c-set-key "\C-s" 'toggle-gnuserv) ; or 'server-start
(my-c-set-key "b" 'browse-url)
(my-c-set-key "c" 'liece)
(my-c-set-key "m" 'wl)
(my-c-set-key "n" 'gnus)
(my-c-set-key "p" 'ping)
(my-c-set-key "r" 'rlogin)
(my-c-set-key "t" 'telnet)
(my-c-set-key "w" 'w3m-goto-url)
;; ここからは,C-xにつづくキーの設定
(my-x-set-key "\C-b" 'list-processes)
(my-x-set-key "\C-d" 'find-grep-dired)
(my-x-set-key "\C-f" 'find-file-literally)
(my-x-set-key "\C-t" 'transpose-paragraphs)
(my-x-set-key "\C-w" 'write-region)
(my-x-set-key "'" 'expand-region-abbrevs)
(my-x-set-key "a'" 'list-abbrevs)
(my-x-set-key "ae" 'edit-abbrevs)
(my-x-set-key "ag" 'define-global-abbrev)
(my-x-set-key "ak" 'kill-all-abbrevs)
(my-x-set-key "al" 'define-mode-abbrev)
(my-x-set-key "ar" 'read-abbrev-file)
(my-x-set-key "au" 'unexpand-abbrev)
(my-x-set-key "aw" 'write-abbrev-file)
(my-x-set-key "c" 'calendar)
(my-x-set-key "d" 'find-name-dired)
(my-x-set-key "i" 'insert-buffer)
(my-x-set-key "m" 'wl-draft)
(my-x-set-key "n" 'gnus-post-news)
(my-x-set-key "o" 'cyclic-windows)
;; あとは特殊なキーの設定
;; use keysym, if running on X Window System
(when (eq window-system 'x)
(global-set-key [henkan] 'toggle-input-method)
(global-set-key [pause] 'keyboard-quit)
(global-set-key [print] 'print-buffer)
(global-set-key [(shift mouse-2)] 'browse-url-at-mouse)
(global-set-key [(mouse-6)]
#'(lamba () (message "mouse 6 is not bound")))
(unless my-xemacs-p ; Emacs-20
(global-set-key [backspace] nil)
(global-set-key [delete] 'delete-char)))
;;; keybind-config.el ends here
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment