如何在emacs中移动文件的开头(即窗口文本编辑器中 Ctrl + Home 的效果)?
Mashing pageup不会将光标移动到开头(Ctrl+Home
,ofc也不会。)
Here所需结果的快捷方式描述为:
M-<
: 移动到缓冲区的顶部(缓冲区的开头)。使用数字参数n,从顶部移动到n / 10。
M->
: 移动到缓冲区的末尾(缓冲区结束)。
然而Meta + <
产生&#34;没有M-x标签 - 搜索或M-x标签 - 正在进行查询 - 替换&#34;消息。
我输入的快捷方式为Alt + Shift + ,
,因为要获得&#34; <
&#34;我必须输入&#34; Shift + ,
&#34;
我做错了吗?
谢谢。
修改
事实证明,这只是在通过屏幕运行emacs时出现的问题,其中键盘快捷键由于某种原因被误解。
例如,C-Home
会显示以下错误消息:
M-[ 1 ; 5 h (translated from M-[ 1 ; 5 H) is undefined
周围有什么办法吗?
答案 0 :(得分:5)
这适用于更新的Emacs
Esc followed by < #beginning of file
Esc followed by > #end of file
与ssh和Tmux结合使用效果很好
答案 1 :(得分:1)
我无法将您遇到的确切行为复制为 C-HOME 。对我来说,它翻译成M-[ 1 ;
,没有5H
(但实际上是插入的...)。
但是,鉴于此,这是我设置绑定的方法。
我要进入*scratch*
缓冲区并输入
(read-key-sequence "please type C-home ")
C-j
哪个会提示您输入密钥序列,所以 C-HOME 也是如此,Emacs应该在read-key-sequence
行后插入以下内容:
"^[[1;" 5H这向我显示了键序列的实际字符串以及神秘的
5H
。
使用字符串,我将在.emacs中设置绑定,如下所示:
(global-set-key "^[[1;" 'beginning-of-buffer)
这将适当地定义键绑定,除了(对我而言)它现在在缓冲区的顶部插入5H
。我相信5H
是屏幕的产物...
已更新为添加:
5H
使我烦恼,但据我所知,Emacs认为我们实际上是在键入它。因此,我编写了两种导致相同行为的替代方法。
第一个使用keyboard-quit
中断键序列之后到达缓冲区的开头。这样可以防止插入5H
。但是这样做有一个缺点,keyboard-quit
–会随时闪烁/闪烁。有点烦人。
(global-set-key "^[[1;" 'my-bob) (defun my-bob () "Go to beginning of buffer, then quit" (interactive) (beginning-of-buffer) (keyboard-quit))
为了避免使用keyboard-quit
,我编写了一个不同的版本,该版本运行一些代码段,如果存在5H
,则会删除它们。它涉及更多一点,但是可以完成工作。
(global-set-key "^[[1;" 'my-bob) (defun my-bob () "Go to beginning of buffer, then delete any 5H inserted by the binding" (interactive) (beginning-of-buffer) (run-with-idle-timer 0.1 nil 'delete-inserted-chars "5H")) (defun delete-inserted-chars (chars) (save-excursion (backward-char (length chars)) (if (looking-at (regexp-quote chars)) (delete-char (length chars)))))
delete-inserted-chars
可以重新用于屏幕上的其他绑定,这些绑定也恰好会插入字符。
答案 2 :(得分:0)
您可以做的一件事转到第一行:
C-u 1 M-g M-g