Emacs C-l命令仅重新居中屏幕,不';t循环通过顶部和底部重新定位
在我的机器上反复运行emacs命令Emacs C-l命令仅重新居中屏幕,不';t循环通过顶部和底部重新定位,emacs,elisp,text-editor,Emacs,Elisp,Text Editor,在我的机器上反复运行emacs命令C-l,不会在这三个位置循环,只有第一个位置(屏幕中心) 从: C-l(重新居中上下) 滚动所选窗口,使当前行成为最中间的文本 线路;在随后的连续调用中,将当前行设置为 按循环顺序排列顶行、底行等。可能地 也重新显示屏幕(上下重新居中) 在一行中键入两次C-l(C-l C-l)会滚动窗口,使该点 位于屏幕最上面的一行。输入第三个C-l将滚动窗口 因此,该点位于最底部的屏幕线上。每个连续的C-l 在这三个位置循环 当我运行C-l时,它只会滚动窗口,使当前行位于最中
C-l
,不会在这三个位置循环,只有第一个位置(屏幕中心)
从:
C-l(重新居中上下)
滚动所选窗口,使当前行成为最中间的文本
线路;在随后的连续调用中,将当前行设置为
按循环顺序排列顶行、底行等。可能地
也重新显示屏幕(上下重新居中)
在一行中键入两次C-l(C-l C-l)会滚动窗口,使该点
位于屏幕最上面的一行。输入第三个C-l将滚动窗口
因此,该点位于最底部的屏幕线上。每个连续的C-l
在这三个位置循环
当我运行C-l
时,它只会滚动窗口,使当前行位于最中间的文本行。但是在随后的调用中,该命令只是保持在同一点重新居中窗口。我在其他机器上使用过emacs,在这些机器上循环工作,第二次和第三次迭代确实会将窗口滚动到最上面和最下面的行,所以我知道我的版本有问题
我怎样才能解决这个问题
(请在注释中告诉我您需要查看哪些文件或信息才能诊断问题。)在init.el文件中尝试此操作
(setq recenter-positions '(middle top bottom))
参考:此功能是在Emacs 23.1中引入的。在早期版本中,
C-l
的行为与您描述的一样:它总是重新居中缓存,从不在顶部和底部之间循环
从Emacs 23手册的“Emacs 22 Antinews”部分:
对于那些生活在时间倒流中的用户,这里是关于降级到Emacs版本22.3的信息
C-l
现在运行的是recenter,而不是recenter top-bottom。这总是将当前行设置在窗口的中心,而不是在连续调用时循环通过窗口的中心、顶部和底部。这允许您键入C-lc-lc-lc-lc-l
,以绝对确保您已重新居中该行
正如@legocia所提到的,我在23版中向Emacs添加了这个命令
但您可以通过加载库来获得原始版本,该版本适用于所有Emacs版本。如果您不想在那里定义其他命令,也可以从那里获取函数的代码。您安装了哪些Emacs插件,如果有的话?@echristopherson安装了这个sass模式插件,但只是对它进行了rm'ed,因为我没有使用它。()您使用的是哪个Emacs版本?此功能在Emacs 23.1中引入;早期版本的行为和您描述的一样。Emacs 22已经有很多年了。如果您不打算升级(您可能应该升级),那么您应该警惕依赖这样的在线文档。Emacs是自我记录的,因此您可以通过使用内置的手册和帮助(这对每个人都非常有用,但在您的情况下更是如此)来确保获得适当的信息。我甚至在读完Legocia的答案之前就升级了。我将此放在我的
~/.Emacs
文件中,这是默认的init文件,这似乎没有改变任何事情。我做错什么了吗?你的.emacs文件加载正确吗?你能试试M-x eval expression
然后recenter positions
并告诉我你得到了什么吗?它返回(中上下)
。然后,当我计算(中上下)
时,我得到调试器输入--Lisp错误:(void function middle)
确定。因此,您的重新居中位置
值设置正确。然后可以使用emacs--no init file
启动emacs,并键入以下命令:M-x set variable
然后recenter positions
,然后(中上下)
。如果您的C-l
没有围绕中间、顶部和底部光标位置旋转,则您的emacs不支持此功能(或者如果您在终端或ssh上使用此功能,您的C-l
可能会被shell截获,但我怀疑它是否有效),然后,您安装的一个elisp软件包出现问题。@Markus:对我有用。您是否尝试过使用Emacs-Q
(没有初始化文件)启动Emacs?如果它在这种情况下有效,那么将init文件对分以找到罪魁祸首。哎呀,在看到您的答复之前,我删除了我的评论,因为当我将密钥绑定到它并使用密钥绑定时,“recenter top-bottom”函数确实适用于我。但是如果没有键绑定,直接执行M-x recenter top-bottom
对我不起作用,也就是说,它只居中,而不执行bottom或top命令。@Markus:循环依赖于上一个命令是同一个命令。