Joachim Pense <joachim.pe
...@t-online.de> writes:
> Kai Großjohann:
>> Joachim Pense <joachim.pe...@t-online.de> writes:
>>> One advice (by Kai) seems very good to me: bind caps-lock to Escape.
>> I didn't say that. I bind the key to the left of 1 to escape. (Caps
> Sorry for remembering wrong.
No problemo.
>> [...] Do you want a complete list?
> Yes, please!
OK. Here is my complette .viper file. Please don't just blindly
copy parts of it (or all of it), try to understand what's going on.
This is very much tailored to my personal taste, anyway.
;; -*- emacs-lisp -*-
;; define colon commands via ex-token-alist
;; always use viper for a buffer if appropriate
(setq viper-always t)
;; I want to do many customizations for myself
(setq viper-expert-level 5)
;; key customizations
(setq viper-want-ctl-h-help t)
(setq viper-want-emacs-keys-in-insert t)
(setq viper-want-emacs-keys-in-vi t)
(setq viper-ex-style-editing nil)
(setq-default viper-ex-style-editing nil)
(setq viper-ex-style-motion nil)
(setq-default viper-ex-style-motion nil)
(setq viper-no-multiple-ESC nil)
(setq viper-auto-indent t)
(when (featurep 'iswitchb)
(setq viper-read-buffer-function 'iswitchb-read-buffer))
(viper-set-input-method 1)
;(setq-default viper-special-input-method t)
;; searching
(setq viper-case-fold-search t)
(viper-buffer-search-enable)
;; hacks and kludges
;;(defadvice viper-set-emacs-state-searchstyle-macros
;; (around kai-viper-disable-slash activate)
;; "Disable changing `//' and `///' in Emacs mode in any mode."
;; nil)
;; (viper-set-emacs-state-searchstyle-macros t 'dired-mode) ; dired
;; (viper-set-emacs-state-searchstyle-macros t 'tar-mode) ; tar
;; (viper-set-emacs-state-searchstyle-macros t 'mh-folder-mode) ; mhe
;; (viper-set-emacs-state-searchstyle-macros t 'gnus-group-mode) ; gnus
;; (viper-set-emacs-state-searchstyle-macros t 'gnus-summary-mode)
;; (viper-set-emacs-state-searchstyle-macros t 'Info-mode) ; info
;; (viper-set-emacs-state-searchstyle-macros t 'Buffer-menu-mode) ;buffer-menu
;; misc
;; The following line is superseded by something in the Gnus section.
;(add-to-list 'viper-insert-state-mode-list 'message-mode)
(add-to-list 'viper-vi-state-mode-list 'sawfish-mode)
(add-to-list 'viper-vi-state-mode-list 'xsl-mode)
(remove-hook 'viper-minibuffer-exit-hook 'viper-minibuffer-trim-tail)
(setq viper-slash-and-colon-map nil)
(setq-default viper-slash-and-colon-map nil)
;; bind these keys because they conflict with my personal keymap
(define-key viper-vi-global-user-map [prior] 'scroll-down)
(define-key viper-vi-global-user-map [next] 'scroll-up)
(define-key viper-vi-global-user-map [right] 'viper-forward-char)
(define-key viper-vi-global-user-map [left] 'viper-backward-char)
(define-key viper-insert-global-user-map [prior] 'scroll-down)
(define-key viper-insert-global-user-map [next] 'scroll-up)
(define-key viper-minibuffer-map [prior] 'switch-to-completions)
;; this one conflicts with MULE
(define-key viper-vi-basic-map (kbd "C-\\") nil)
(define-key viper-vi-basic-map (kbd "C-|") 'viper-alternate-Meta-key)
(define-key viper-insert-basic-map (kbd "C-\\") nil)
(define-key viper-insert-basic-map (kbd "C-|") 'viper-alternate-Meta-key)
;; the following are for programming
(defun kai-viper-skeleton-comment ()
(interactive)
(call-interactively 'skeleton-comment)
(viper-change-state-to-insert))
(defun kai-viper-skeleton-small-comment ()
(interactive)
(call-interactively 'skeleton-small-comment)
(viper-change-state-to-insert))
(define-key viper-vi-basic-map (kbd "z C") 'kai-viper-skeleton-comment)
(define-key viper-vi-basic-map (kbd "z c") 'kai-viper-skeleton-small-comment)
(define-key viper-vi-basic-map (kbd "z n") 'next-error)
(define-key viper-vi-basic-map (kbd "z m") 'compile)
(define-key viper-vi-basic-map (kbd "z f") 'imenu)
(define-key viper-vi-basic-map (kbd "z v") vc-prefix-map)
(define-key viper-vi-basic-map (kbd "z SPC") 'set-mark-command)
(define-key viper-vi-basic-map (kbd "z w") 'kill-region)
(define-key viper-vi-basic-map (kbd "z q") 'bury-buffer)
(define-key viper-vi-basic-map (kbd "z g") ctl-x-map)
(define-key viper-vi-basic-map (kbd "z x") ctl-x-map)
(define-key viper-vi-basic-map (kbd "z o") 'switch-to-other-buffer)
(define-key viper-vi-basic-map (kbd "z b") 'ibuffer)
(define-key viper-vi-basic-map (kbd "z a") 'delete-other-windows)
(define-key viper-vi-basic-map (kbd "z z") 'other-window)
(define-key viper-vi-basic-map (kbd "z s") 'other-window)
(define-key viper-vi-basic-map (kbd "z p") 'other-window)
(define-key viper-vi-basic-map (kbd "z 0") 'delete-window)
(define-key viper-vi-basic-map (kbd "z 1") 'delete-other-windows)
(define-key viper-vi-basic-map (kbd "z 2") 'split-window-vertically)
(define-key viper-vi-basic-map (kbd "z 4") ctl-x-4-map)
(define-key viper-vi-basic-map (kbd "q") 'fill-paragraph)
(define-key viper-vi-basic-map (kbd "C-u") 'universal-argument)
(define-key viper-vi-global-user-map (kbd "C-h") 'help-command)
(define-key viper-insert-global-user-map (kbd "C-h") 'help-command)
(define-key viper-insert-global-user-map (kbd "C-t") 'transpose-chars)
(setq viper-insert-state-cursor-color "seagreen")
(setq viper-replace-overlay-cursor-color "firebrick")
(defun kai-viper-Open-line (arg)
"Open line below, leaving more space."
(interactive "P")
(beginning-of-line)
(open-line 1)
(newline)
(viper-Open-line arg))
(define-key viper-vi-basic-map (kbd "O") 'kai-viper-Open-line)
(defun kai-ex-write ()
"Like the viper `:w' command."
(interactive)
(viper-ex nil "write"))
(define-key viper-vi-basic-map (kbd "z /") 'kai-ex-write)
(setq viper-smart-suffix-list
(append viper-smart-suffix-list
(list "java")))
;;-;; iso-accents-mode support
;;-(make-variable-buffer-local 'viper-automatic-iso-accents)
;;-(defun kai-toggle-viper-automatic-iso-accents ()
;;- (interactive)
;;- (setq viper-automatic-iso-accents (not viper-automatic-iso-accents)))
;;-(global-set-key [f3 f2] 'kai-toggle-viper-automatic-iso-accents)
;; Gnus specific customization
(defun kai-viper-message-hook ()
(viper-add-local-keys 'vi-state
'(("ZZ" . message-send-and-exit)
("ZN" . message-insert-my-name)
("ZG" . kai-message-delete-gcc)
("zz" . message-send-and-exit)
("zk" . message-kill-buffer)
("zn" . message-insert-my-name)
("zs" . message-kill-to-signature)
("za" . message-elide-region)
("zv" . message-delete-not-region)
("zg" . kai-message-delete-gcc)
("zh" . kai-message-goto-gcc)
("zc" . message-goto-cc)
("zt" . message-goto-to)
("zb" . message-goto-body)
)))
(add-hook 'message-mode-hook 'kai-viper-message-hook)
(defun kai-viper-gnus-setup ()
(setq viper-emacs-kbd-minor-mode nil))
(add-hook 'gnus-summary-mode-hook 'kai-viper-gnus-setup)
;; This chooses insert mode for postings, where point is in a header.
;; For followups, where point is in the body, we choose command mode
;; since we'll likely want to delete some quoted text or suchlike.
;; Thanks to Julien Oster for this nifty piece of code.
(defun kai-viper-message-choose-mode ()
(when (message-point-in-header-p)
(viper-insert 0)))
(add-hook 'message-mode-hook 'kai-viper-message-choose-mode)
;; AUC TeX specific customization
(defun kai-viper-LaTeX-section ()
(interactive)
(call-interactively 'LaTeX-section)
(viper-change-state-to-insert))
(defun kai-viper-LaTeX-environment (arg)
(interactive "*P")
(LaTeX-environment arg)
(unless arg (viper-change-state-to-insert)))
(defun kai-viper-LaTeX-insert-item ()
(interactive "*")
(end-of-line)
(LaTeX-insert-item)
(viper-change-state-to-insert))
(defun kai-viper-TeX-insert-macro ()
(interactive)
(call-interactively 'TeX-insert-macro)
(viper-change-state-to-insert))
(defun kai-viper-LaTeX-close-environment ()
(interactive)
(end-of-line)
(call-interactively 'LaTeX-close-environment))
(defun kai-viper-skeleton-latex-german ()
(interactive)
(call-interactively 'skeleton-latex-german))
(defun kai-viper-tex-hook ()
(viper-add-local-keys 'vi-state
'(("zs" . kai-viper-LaTeX-section)
("ze" . kai-viper-LaTeX-environment)
("zi" . kai-viper-LaTeX-insert-item)
("zm" . kai-viper-TeX-insert-macro)
("z]" . kai-viper-LaTeX-close-environment)
("zd" . kai-viper-skeleton-latex-german)
("zz" . TeX-command-master)
("z`" . TeX-next-error)
("zn" . TeX-next-error)
("zl" . TeX-recenter-output-buffer)
("z=" . reftex-toc))))
(add-hook 'LaTeX-mode-hook 'kai-viper-tex-hook)
(viper-harness-minor-mode "reftex")
;; Todo mode specific customization
(add-hook 'todo-mode-hook 'viper-change-state-to-emacs)
(viper-harness-minor-mode "todo-mode")
;; Server mode specific customization
(defun kai-viper-server-switch-hook ()
(use-local-map (copy-sequence (or (current-local-map)
(make-sparse-keymap "Local map"))))
(viper-add-local-keys "zz" 'server-edit))
(add-hook 'server-switch-hook 'kai-viper-server-switch-hook)
;; SGML mode specific customization (psgml)
(defun kai-viper-sgml-insert-element ()
(interactive)
(call-interactively 'sgml-insert-element)
(viper-change-state-to-insert))
(defun kai-viper-sgml-insert-tag ()
(interactive)
(call-interactively 'sgml-insert-tag)
(viper-change-state-to-insert))
(defun kai-viper-sgml-insert-end-tag ()
(interactive)
(call-interactively 'sgml-insert-end-tag))
(defun kai-viper-sgml-split-element ()
(interactive)
(call-interactively 'sgml-split-element)
(viper-change-state-to-insert))
(defun kai-viper-sgml-mode-hook ()
(viper-change-state-to-vi)
(viper-add-local-keys 'vi-state
'(("ze" . kai-viper-sgml-insert-element)
("zz" . kai-viper-sgml-insert-element)
("z," . kai-viper-sgml-insert-tag)
("zn" . kai-viper-sgml-insert-tag)
("z/" . kai-viper-sgml-insert-end-tag)
("zm" . kai-viper-sgml-split-element))))
(add-hook 'sgml-mode-hook 'kai-viper-sgml-mode-hook)
;; vc-log-mode
(defun kai-viper-vc-log-mode ()
(viper-add-local-keys 'vi-state
'(("zz" . vc-finish-logentry))))
(add-hook 'vc-log-mode-hook 'kai-viper-vc-log-mode)
;; log-edit mode
(defun kai-viper-log-edit-mode ()
(viper-add-local-keys 'vi-state
'(("zz" . log-edit-done))))
(add-hook 'log-edit-mode-hook 'kai-viper-log-edit-mode)
;; For several modes: go to vi mode on startup
(add-hook 'dtd-mode-hook 'viper-change-state-to-vi)
;; For some modes, go to emacs mode on startup
(add-hook 'diff-mode-hook 'viper-change-state-to-emacs)
;; added automatically
(setq viper-inhibit-startup-message 't)
;; .viper ends here
kai
--
A large number of young women don't trust men with beards. (BFBS Radio)