viper-modeであててんのよ!(これはひどいキーバインドですね

適当にEmacsでViのエミュレートをするviper-modeをいじくりまわしていたら、ひどいキーバインドができあがりました!
viper-modeのいいところは、Viと同じノーマルモードを持てることです。ということで俺俺キーバインドをあててもいいじゃない!! ということで describe-keyでバインドを調べて適当にぶち込んだりぶち込んだり。
Emacs Vim Vimperatorの影響を多分にうけていると思います。僕以外が使うことを想定していないので、全くおすすめしませんが、あくまで一例として置いておきますね
t には anything.el , uにはundo-tree.el をあてています

;;viper-mode
(setq viper-mode t)
(setq viper-inhibit-startup-message 't)
(setq viper-expert-level '3)
(define-key global-map (kbd "\C-g") 'viper-intercept-ESC-key)
(require 'viper)
(define-key viper-insert-global-user-map "\C-c" 'viper-exit-insert-state)

(defun swap-screen()
  "Swap two screen,leaving cursor at current window."
  (interactive)
  (let ((thiswin (selected-window))
        (nextbuf (window-buffer (next-window))))
    (set-window-buffer (next-window) (window-buffer))
    (set-window-buffer thiswin nextbuf)))
(defun swap-screen-with-cursor()
  "Swap two screen,with cursor in same buffer."
  (interactive)
  (let ((thiswin (selected-window))
        (thisbuf (window-buffer)))
    (other-window 1)
    (set-window-buffer thiswin (window-buffer))
    (set-window-buffer (selected-window) thisbuf)))

(defun my-viper-beginning-of-buffer ()
  (interactive)        
  (beginning-of-buffer))
(define-key viper-vi-global-user-map [?g?g] 'my-viper-beginning-of-buffer)
 (defun my-viper-star ()
   (interactive)
   (let ((wd (concat "\\<" (thing-at-point 'symbol) "\\>")))
     (setq viper-s-string wd)
     (setq viper-s-forward t)
     (viper-search wd t 1)))
 (define-key viper-vi-global-user-map [?*] 'my-viper-star)
 (defun my-viper-jump-tag ()
   (interactive)
   (setq wd (thing-at-point 'symbol))
   (find-tag wd))
 (define-key viper-vi-global-user-map [?\C-\]] 'my-viper-jump-tag)
 (defun my-viper-jump-tag-next ()
   (interactive)
   (setq wd (thing-at-point 'symbol))
   (find-tag wd 0))
 (define-key viper-vi-global-user-map [?\C-:] 'my-viper-jump-tag-next)
 (defun my-viper-pop-tag ()
   (interactive) 
   (pop-tag-mark))
 (define-key viper-vi-global-user-map [?\C-t] 'my-viper-pop-tag)
 (defun my-viper-pop-mark ()
   (interactive)        
   (set-mark-command -1))
(define-key viper-vi-global-user-map [?\C-o] 'my-viper-pop-mark)
(define-key viper-vi-global-user-map [?u] 'undo)
(define-key viper-insert-global-user-map [delete] 'delete-char)
(define-key viper-vi-global-user-map "1" 'delete-other-windows)
(define-key viper-vi-global-user-map "2" 'split-window-vertically)
(define-key viper-vi-global-user-map "3" 'split-window-horizontally)
(define-key viper-vi-global-user-map "4" 'swap-screen)
(define-key viper-vi-global-user-map "5" 'swap-screen-with-cursor)
(define-key viper-dired-modifier-map "j" 'dired-next-line)
(define-key viper-dired-modifier-map "k" 'dired-previous-line)
(define-key viper-dired-modifier-map "/" 'dired-goto-file)
(define-key viper-dired-modifier-map "l" '(lambda () (interactive) (dired-next-line 10)))
(define-key viper-dired-modifier-map "h" '(lambda () (interactive) (dired-previous-line 10)))
(define-key viper-vi-global-user-map "k" 'previous-line)
(define-key viper-vi-global-user-map "h" 'backward-char) 
(define-key viper-vi-global-user-map "j" 'next-line)
(define-key viper-vi-global-user-map "l" 'forward-char)
(define-key viper-vi-global-user-map "\C-y" 'yank)
(define-key viper-vi-global-user-map "v" 'set-mark-command)
(define-key viper-vi-global-user-map "\C-g" 'keyboard-quit)
(define-key viper-vi-global-user-map "\C-w" 'kill-region)
(define-key viper-vi-global-user-map "t" 'anything)
(define-key viper-vi-global-user-map "o" 'other-window)
(define-key viper-vi-global-user-map "\C-h" 'move-beginning-of-line)
(define-key viper-vi-global-user-map "\C-l" 'move-end-of-line)
(define-key viper-vi-global-user-map "b" 'buffer-menu)
(define-key viper-vi-global-user-map "u" 'undo-tree-visualize)