保存并执行Emacs键盘宏
我在Emacs的另一个会话中执行个人宏时遇到问题。我成功地创建了宏,然后执行,但是,在我想保存它以便下次执行它们之后 为此,我在保存并执行Emacs键盘宏,emacs,keyboard-shortcuts,Emacs,Keyboard Shortcuts,我在Emacs的另一个会话中执行个人宏时遇到问题。我成功地创建了宏,然后执行,但是,在我想保存它以便下次执行它们之后 为此,我在~/.emacs (fset 'psTest (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ("^X2^X2^X2^X2" 0 "%d")) arg))) 但是当我在另一个文件中调用我的宏
~/.emacs
(fset 'psTest
(lambda (&optional arg) "Keyboard macro."
(interactive "p")
(kmacro-exec-ring-item (quote ("^X2^X2^X2^X2" 0 "%d")) arg)))
但是当我在另一个文件中调用我的宏时,Emacs不会执行我的宏,而是在我的文件中写入键
^X2^X2^X2^X2
所有我的命令:在终端中:
user@PC$emacs~/.emacs
在emacs中:
C-x(
C-X2
C-x)
C-x C-k n psTest
M-x插入kbd宏[ENTER]psTest[ENTER]
C-x C-C
在终端中:user@PC$cat~/.emacs:
(fset'psTest
(lambda(&可选arg)“键盘宏”。(交互式“p”)(kmacro执行环项(引号(“^X2”0“%d”))arg))
user@PC$emacs~/测试
在emacs中:
M-psTest
现在,我的宏[M-psTest]在我的文件中写入^X2,而不是执行分割屏幕的[^X2]
我的错误在哪里?
谢谢问题在于宏定义中的序列“^X2”。它包含两个字符
^
和X
,而不是字符集ascii(ascii(ISO646 IRV))
中的单个字符0x18
,emacs使用该字符集来指代C-X
,但显示相同,尽管颜色可能不同。如果将前两个字母序列替换为后一个字符,并再次计算定义,则它应该可以工作
您可以使用插入字符
C-x8RET#x18
RET
PS:在您可以使用的位置显示有关特定字符的信息
M-x
desribe char
或什么光标位置
,默认情况下绑定到C-x=上。我同意Simon Fromme
要插入C-x
字符,您可以从他的答案中省略#x
前缀并键入:
C-x8RET18RET
但如果您不知道此字符或任何其他字符的ascii码的十六进制值,也可以简单地键入C-qC-x
然而,在您的情况下,我宁愿搜索与C-x2
序列相关联的函数。您可以使用以下任一方法轻松找到下面的拆分窗口
:
C-hkc-x2ret
- 或
M-x编辑最后一个kbd宏RET
(fset 'psTest #'split-window-below)
或
这可能是开始学习emacs lisp的一个好方法 我可以看出您正确地使用了
插入kbd宏
来生成代码。我不明白你是如何在你的init文件中找到错误版本的代码的。当然,如果您使用emacs命令复制代码并将其拖动到init文件中,应该不会有问题。您是否使用了其他技术进行复制和粘贴?你肯定不是手工打出来的??是的,我也在想这个!
(defun psTest ()
(interactive)
(split-window-below))