我想知道emacs是否内置了这些光标移动命令,或者我是否必须编写它们或在某处找到一个片段.我发现它们非常漂亮,并且经常在vim中使用它们.到目前为止,我还没有在emacs的文档中找到它们.
在vim中,它们看起来像这样:shift -h - >将光标移动到屏幕顶部shift-m - >将光标移动到屏幕中间shift -l - >将光标移动到屏幕底部
只是为了澄清,我不打算将光标移动到文档的顶部/底部,只是移动到文档当前可见部分的顶部/底部,即当前正在屏幕上显示的部分.
到目前为止我找到了其中一个.alt-r似乎相当于vim的shift-m.它将光标移动到中间一行的第一列.
使用:
Alt+0 Alt+r
- 窗口顶部
Alt+- Alt+r
- 窗口底部
严格来说,这些应该写M-0 M-r
在屏幕的顶部和屏幕M-- M-r
的底部.其中M
表示Meta
通常映射到的键Alt
.
我按如下方式计算了这些击键:
M-r
运行命令move-to-window-line
.我发现了这个C-h k M-r
,即.Ctrl+h
,k
,Alt+r
. 键序列C-h k
意味着告诉我下一个键序列的作用. 它告诉我命令名称,还可以将数字参数传递给命令以选择要转到的行.如果你没有通过它,你可以将点移动到你看到的窗口中间.
通过在按住Meta的同时键入数字,可以将数字参数传递给命令.减号本身就是-1.现在,要移动到屏幕顶部,我们要传递第0行,并在屏幕底部显示第-1行.这给了我们上面的关键序列.
如果你想绑定move-to-window-line
一个不同的键看看Joe对这个问题的回答.
您希望使用的功能是move-to-window-line
,其定义是:
move-to-window-line is an interactive built-in function in `C source code'. It is bound to M-r. (move-to-window-line arg) Position point relative to window. With no argument, position point at center of window. An argument specifies vertical position within the window; zero means top of window, negative means relative to bottom of window.
您可以使用a调用它0
来转到页面顶部,然后-1
转到页面底部.这些可以绑定到具有匿名函数或命名函数的键.给出了两者的例子.
匿名函数
(global-set-key [(f4)] (function (lambda () "Go to top of page." (interactive) (move-to-window-line 0)))) (global-set-key [(f4)] (function (lambda () "Go to bottom of page." (interactive) (move-to-window-line -1))))
命名功能
(defun my-top-of-page () "Go to top of page." (interactive) (move-to-window-line 0)) (defun my-bottom-of-page () "Go to bottom of page." (interactive) (move-to-window-line -1)) (global-set-key [(f4)] 'my-top-of-page) (global-set-key [(shift f4)] 'my-bottom-of-page)
在Emacs 23.2中,Mr完全符合您的要求.
第一次调用此命令会将点移动到当前可见窗口的中心,下一个连续调用将移动到顶部和底部.
无需其他配置或自定义功能.