【问题标题】:remapping <space> and <backspace> in Vimpulse to scroll more在 Vimpulse 中重新映射 <space> 和 <backspace> 以滚动更多
【发布时间】:2011-07-28 07:44:05
【问题描述】:

在 Some Thoughts on Emacs and Vim 中,Shinobu 建议重新映射 和 在带有 Vimpulse 0.5 的 Emacs 2.3.1 上不起作用。

我做错了什么?

;; from .emacs

; simulate vim's "nnoremap <space> 10<c-e>10j"
(vimpulse-map " " (lambda ()
                     (interactive)
                     (next-line 10)
                     (viper-scroll-up-one 10)
                     ))

; simulate vim's "nnoremap <backspace> 10<c-y>10k"
(define-key viper-vi-global-user-map [backspace] (lambda ()
                     (interactive)
                     (previous-line 10)
                     (viper-scroll-down-one 10)
                     ))

【问题讨论】:

    标签: emacs viper-mode viper vimpulse


    【解决方案1】:

    知道什么不起作用会有所帮助。

    以下对我有用,如 SPC 和 backspace 在命令模式(Vi 状态)下滚动 10:

    (define-key viper-vi-global-user-map [backspace]
      (lambda ()
        (interactive)
        (previous-line 10)
        (viper-scroll-down-one 10)))
    
    (define-key viper-vi-global-user-map (kbd "SPC")
      (lambda ()
        (interactive)
        (next-line 10)
        (viper-scroll-up-one 10)))
    

    这是使用vimpulse.el version 0.5 和viper-expert-level 5。

    【讨论】:

    • 那行得通。我应该使用 (vimpulse-map) 代替 (define-key) 吗?
    • @Natan 我不是 vimpulse 专家,所以我不知道 vimpulse-map 什么时候有用。
    • 好的。最后一个问题:你怎么知道使用[backspace] 而不是&lt;backspace&gt;?根据C-h k &lt;backspace&gt; 是正确的绑定,但只有[backspace] 有效。
    • 其实我更喜欢调用kbd,这样更容易使用。您快到了。一旦你完成了C-h k,你就正确地看到了键映射到&lt;backspace&gt;,现在,要在对define-key的调用中使用它,你只需执行(kbd "&lt;backspace&gt;")(基本上从Help 缓冲到传递给 kbd 的字符串中。我不能 100% 确定您按下的键是否与此相同,但我会适当地更新答案。
    • 太棒了。感谢您帮助我自己解决未来的问题。
    猜你喜欢
    • 2012-01-24
    • 2016-01-24
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2016-05-15
    相关资源
    最近更新 更多