【发布时间】:2012-08-14 02:47:40
【问题描述】:
在 emacs 中,我想重新绑定键盘的顶行 [1...0],以便按下未修改的键会导致其移位等效项。也就是说,输入1234567890 会导致!"£$%^&*() 被插入到缓冲区中。
我在 Windows Vista 中使用 emacs 24.1.1,并启用了 viper 模式。我正在使用 slime 进行一些 Common Lisp 编程。我使用 viper 是为了避免过于频繁地使用 Ctrl 和 Shift,因为我可以获得一些 emacs 小指(RSI)。开始使用 lisp 进行编程后,我发现点击 S-9 和 S-0 来打开和关闭括号已经开始产生影响。
通过在我的启动文件中包含以下内容,我可以将9 绑定到(,反之亦然。
(defvar my-keymap
(let ((map (make-sparse-keymap)))
(define-key map (kbd "9") '(lambda () (interactive) (insert "(")))
(define-key map (kbd "(") '(lambda () (interactive) (insert "9")))
map))
(viper-modify-major-mode
'lisp-mode
'insert-state
my-key-map)
这工作得很好,很容易扩展到行的其余部分,除了我希望能够在两种模式之间切换而不必按住 shift(例如,通过切换 Caps Lock)。
有什么办法可以做到这一点,还是我的方法都错了?
【问题讨论】:
标签: emacs lisp bind key-bindings viper-mode