2014-03-31 53 views
3

刚刚从vi中加入Emacs。Emacs:重新绑定数字(Beast VI VI VI编辑器)

我想重新键入键盘顶部的所有数字到其相对位置(即1个映射到!,2个映射到@等),同时将数字键盘数字保持为简单数字。

我重新映射了数字,并且键盘顶部的数字正确映射到符号;然而这也将小键盘数字映射到符号。作为回应,我试图重新将键盘数字重新映射回数字,但这不成功 - 它们保留为符号。

当我使用vi时,这很简单易行,但我更愿意继续使用Emacs。任何人都有解决方案?

样品的.emacs:

(global-set-key "1" "!") 
; etc... 

(global-set-key [kp-1] "1") 
; etc... 

回答

5

也许是这样的:

(global-set-key (kbd "<kp-1>") "1") 
(keyboard-translate ?1 ?!) 

我会实际使用xmodmap更改键在整个 系统,而不只是Emacs的。

+0

这个作品 - 感谢您的帮助。 – user3355020

+0

你也可以看看这个答案以及:http://stackoverflow.com/a/5066313/324105 – phils

1

试试这个:

(global-set-key "1" "!") 
(global-set-key [kp-1] (lambda() (interactive) (insert "1"))) 

附:我经常使用(lambda()(interactive)...)在global-set-key中,并为它创建别名:

(defmacro ilam (&rest body) 
    "Interactive lambda" 
    `(lambda() 
    (interactive) 
    ,@body))