如何自定义Emacs键绑定以转到缓冲区的特定行/结尾

如何自定义Emacs键绑定以转到缓冲区的特定行/结尾,emacs,elisp,customization,text-editor,key-bindings,Emacs,Elisp,Customization,Text Editor,Key Bindings,我想定制Emacs,以便 ESC:nRET 带我到行号n 及 ESC:$RET 带我到最后一行。(vi编辑器就是这样工作的。) 如何在Emacs配置文件中实现这一点?目前,我的.emacs中有: (global-set-key (kbd "M-9") 'prev-window) (global-set-key (kbd "M-0") 'other-window) 我不想使用任何现成的解决方案(如evil),因为它们过于臃肿,并且会弄乱我现有的快捷方式。将其放入文件并加载(加载意味着执行): 要

我想定制Emacs,以便

ESC:
n
RET

带我到行号
n

ESC:
$
RET

带我到最后一行。(vi编辑器就是这样工作的。)

如何在Emacs配置文件中实现这一点?目前,我的
.emacs
中有:

(global-set-key (kbd "M-9") 'prev-window)
(global-set-key (kbd "M-0") 'other-window)

我不想使用任何现成的解决方案(如evil),因为它们过于臃肿,并且会弄乱我现有的快捷方式。

将其放入文件并加载(加载意味着执行):

要加载它,可以使用M-x
load file
,然后以交互方式输入文件路径

请记住,组合键M-:(与ESC:)在Emacs中已经有了意义,因此现在它被隐藏起来了


当然,您也可以从
.emacs
加载文件,方法是将
(加载文件/path/to/my/file”)
放入
.emacs
中,或者将这些行直接放入
.emacs
文件(或加载的任何其他配置文件)

为什么
M-x
会被您提供的代码掩盖?OP想要使用
ESC:
,而不是
escx
:)啊,打字错误,是的。当然,
M-:
会被掩蔽!严重质疑禁用M-的内置行为是否明智:
(defun vi-goto-line (arg)
 (interactive "sLine:")
 (message arg)
 (if (string= "$" arg)
  (end-of-buffer)
  (goto-line (string-to-int arg))
 )
)

(global-set-key (kbd "M-:") 'vi-goto-line)