移到Emacs中文件的开头

npi*_*pit 10 emacs

如何在emacs中移动到文件的开头(即窗口文本编辑器中Ctrl+ 的效果Home)?

Mashing pageup不会将光标移动到开头(也不是Ctrl+Home,ofc).

这里所需结果的快捷方式描述如下:

M-<:移动到缓冲区的顶部(缓冲区的开头).使用数字参数n,从顶部移动到n/10.

M-> :移动到缓冲区的末尾(缓冲区结束).

但是Meta + <产生"没有Mx标签 - 搜索或Mx标签 - 查询 - 替换正在进行中"消息.

我正在键入快捷方式,Alt + Shift + , 因为要获取" <"我必须键入" Shift + ,"

难道我做错了什么?

谢谢.

编辑: 只有在通过屏幕运行emacs时才会出现这个问题,其中键盘快捷键由于某种原因被误解.例如,C-Home给出以下错误消息:

M-[ 1 ; 5 h (translated from M-[ 1 ; 5 H) is undefined

有什么办法吗?

Pun*_*rud 11

这适用于较新的 Emacs

Esc followed by < #beginning of file
Esc followed by > #end of file
Run Code Online (Sandbox Code Playgroud)

与 ssh 和 Tmux 结合使用效果很好


Tre*_*son 4

我无法重现您所经历的确切行为C-HOME。对我来说,它翻译为M-[ 1 ;,没有5H(但实际上是插入的......)。

但是,考虑到这一点,我将如何设置绑定。

我会进入*scratch*缓冲区并输入

(read-key-sequence "please type C-home ") C-j

这将提示您输入按键顺序,因此,C-HOMEEmacs 应该在该行之后插入以下内容read-key-sequence

    “^[[1;”
    5小时
这向我显示了按键序列的实际字符串,以及神秘的5H.

使用该字符串,我在 .emacs 中设置绑定,如下所示:

(global-set-key "^[[1;" 'beginning-of-buffer)
Run Code Online (Sandbox Code Playgroud)

这将适当地定义键绑定,除了(对我来说)它现在插入5H到缓冲区的顶部。我相信这5H是屏幕的产物......


更新添加:

5H让我很恼火,但据我所知,Emacs 认为我们实际上是在打字。因此,我编写了两种导致相同行为的替代方案。

第一个用于在到达缓冲区开头keyboard-quit中断按键序列。这会阻止插入。但这样做的缺点是- 它会随时在你面前闪烁/叮叮。有点烦人。5Hkeyboard-quit

(全局设置键“^[[1;”'我的鲍勃)

(defun 我的鲍勃 ()
  “转到缓冲区的开头,然后退出”
  (交互的)
  (缓冲区开始)
  (键盘退出))

为了避免keyboard-quit,我编写了一个不同的版本,它运行一小段代码,5H如果存在则删除它。它涉及更多一点,但可以完成工作。

(全局设置键“^[[1;”'我的鲍勃)

(defun 我的鲍勃 ()
  “转到缓冲区的开头,然后删除绑定插入的任何 5H”
  (交互的)
  (缓冲区开始)
  (run-with-idle-timer 0.1 nil '删除插入的字符“5H”))

(defun 删除插入的字符(字符)
  (保存游览
    (向后字符(长度字符))
    (如果(查看(正则表达式引用字符))
        (删除字符(长度字符)))))

可以将其delete-inserted-chars重新用于屏幕中也恰好插入字符的其他绑定。