【问题标题】:viper-mode changes <delete> keyviper 模式更改 <delete> 键
【发布时间】:2012-05-22 06:58:23
【问题描述】:

我想在 viper 模式下使用 &lt;delete&gt; 键(我想是 C-d)进行前向删除。

在启动 viper 模式之前,&lt;delete&gt; 可以正常工作。在 viper 模式下,&lt;delete&gt; 跳转到缓冲区的最后一行。

我已将(setq viper-ex-style-editing nil) 添加到 .viper,&lt;backspace&gt; 在所有模式下均有效。

【问题讨论】:

  • 由于您使用的是 viper 模式,我们需要更多信息。你想让它在插入模式下绑定吗?还是命令模式?两个都?你是什​​么级别的毒蛇用户(1-5)?
  • 我在 5 级使用 viper。我想在插入模式和命令模式下都使用 &lt;delete&gt;

标签: emacs viper viper-mode


【解决方案1】:

试试这个:

(define-key viper-vi-basic-map "\C-d" 'viper-delete-char)
(define-key viper-insert-basic-map "\C-d" 'viper-delete-char)

现在,使用viper-delete-char 命令与viper 保持一致。如果您想要常规的 emacs 删除行为,请改用 delete-char

viper 是使用一堆不同的键映射实现的,而要弄清楚要修改哪些键映射是很棘手的。最简单的方法(通常)是只看源代码。所以你可以从 M-x find-library viper 开始。 注意: 大多数键映射实际上是在库viper-cmd 中定义的。

【讨论】:

    【解决方案2】:

    \ 键将切换回 Emacs 模式进行单次击键,因此您可以使用“\”执行您正在寻找的操作,而无需对您的 .emacs 文件进行任何更改或添加任何代码。

    【讨论】:

      【解决方案3】:

      好的,这就是你要做的。

      (1) 在 vi​​per 模式下,使用 C-h k 找出 &lt;delete&gt; 绑定的内容。以防万一您希望将其附加到其他键上。

      (2) 在其他模式下,使用C-h k 找出执行您想要的功能的名称。我想是delete-forward 但不要相信我,检查一下。 RMS 有重命名事物的烦人倾向。

      (3) 回到 viper 模式缓冲区使用 M-x local-set-key 设置为您想要的。试试看。

      (4) 如果您愿意,请将此代码添加到您的 .emacs 中

      (defun fix-del-key-in-viper-mode ()
        (define-key viper-mode-map "<delete>" your-desired-function))
      (add-hook viper-mode-hooks fix-del-key-in-viper-mode)
      

      警告,由于我没有测试过,您可能不得不对此进行一些处理。尤其要确保它真的是 viper-mode-map 而不是别的东西,因为命名惯例并没有始终如一地遵循。

      【讨论】:

      • 确认,我无法在 viper 模式下设置 。我可以将其他键(如 )设置为 delete-char 并且它们可以工作。 拒绝更改。
      猜你喜欢
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 2018-12-20
      相关资源
      最近更新 更多