首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >emacs:切换数字行到<shift>-ed等效项的绑定

emacs:切换数字行到<shift>-ed等效项的绑定
EN

Stack Overflow用户
提问于 2012-08-18 00:18:09
回答 1查看 207关注 0票数 3

在emacs中,我想重新绑定键盘[1...0]的第一行,这样按下一个未修改的键就可以得到它的移位等效键。也就是说,键入1234567890将导致在缓冲区中插入!"£$%^&*()

我在Windows Vista中使用emacs 24.1.1,并启用了毒蛇模式。我正在使用slime做一些Common Lisp编程。我使用viper,这样我就可以避免使用Ctrl和Shift键太频繁,因为我可以得到一些emacs pinkie (RSI)。在开始使用lisp编程之后,我发现使用S-9S-0来打开和关闭括号开始产生影响。

通过在我的启动文件中包含以下内容,我可以将9绑定到(,反之亦然。

代码语言:javascript
复制
(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)。

有没有办法做到这一点,或者我的做法完全错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-18 02:03:44

这是一个我快速拼凑出来的例子,在Linux上的Emacs24中进行测试:

代码语言:javascript
复制
(setq viper-mode-key-mapping "custom")

(defvar custom-viper-keymap
    (let ((map (make-sparse-keymap)))
      (define-key map (kbd "9") '(lambda () (interactive) (insert "(")))
      (define-key map (kbd "(") '(lambda () (interactive) (insert "9")))
      map))

(defvar default-viper-keymap
    (let ((map (make-sparse-keymap)))
      (define-key map (kbd "9") '(lambda () (interactive) (insert "9")))
      (define-key map (kbd "(") '(lambda () (interactive) (insert "(")))
      map))


(defun switch-viper-mode-custom-keymap () 
  (interactive) 
  (if (string= viper-mode-key-mapping "default")
      (progn (setq viper-mode-key-mapping "custom")
         (viper-modify-major-mode 'lisp-mode 'insert-state custom-viper-keymap))
    (progn (setq viper-mode-key-mapping "default")
       (viper-modify-major-mode 'lisp-mode 'insert-state default-viper-keymap))))

(global-set-key [(control f1)] 'switch-viper-mode-custom-keymap)

当我激活了毒蛇模式时,按CTRL-F1组合键可以将键盘映射从自定义切换到正常。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12009422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档