【问题标题】:Defining key binding with arguments使用参数定义键绑定
【发布时间】:2013-01-26 03:26:00
【问题描述】:

我想将 C-f C-b 映射为在文件中向前和向后移动固定数量的行。

我这样做了:

(global-set-key (kbd "C-f") 'next-line)
(global-set-key (kbd "C-b") 'previous-line)

但我不知道如何在next-line 命令之前指定参数。我想我应该使用digit-argument,但我无法以正确的方式编写命令。

【问题讨论】:

  • ok this (global-set-key (kbd "C-f") '(lambda () (interactive) (forward-line 5))) 有效。虽然它没有完全回答我的问题,但我如何在不使用 lambda 的情况下绑定 M-5 C-n 或更复杂的宏,我可能错过了 elisp 工作的一些真正基本的东西......

标签: emacs elisp


【解决方案1】:

其中一种可能的选择是定义一个新函数:

(defun my-next-line ()
  (interactive)
  (next-line 5))

(global-set-key (kbd "C-f") 'my-next-line)

否则,如果它只是你可以用你可能想要使用的键盘完成的事情

M-x name-last-kbd-macro

并将其保存在您的 .emacs 文件中

M-x insert-kbd-macro

并让 emacs 为您实现该功能。 它只会获取您在调用 name-last-kbd-macro 时提供的名称

【讨论】:

  • 我不知道插入宏,这非常有用。谢谢
  • 我已经尝试过使用字符串参数,但不要忘记(就像我第一次那样)引号。谢谢你:)
【解决方案2】:

您已将问题更改为关于如何直接绑定到键序列

这将 C-c l 绑定到 C-u 5 C-n

(global-set-key (kbd "C-c l") (kbd "C-u 5 C-n"))

【讨论】:

  • 很好,我不知道。非常感谢这个提示。
  • 这是添加新键绑定的好方法,当您已经知道击键并删除命名宏的步骤时。
猜你喜欢
  • 1970-01-01
  • 2014-01-18
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多