在Emacs中更快地更改窗口(或用一次敲击重复上一个快捷方式)

在Emacs中更快地更改窗口(或用一次敲击重复上一个快捷方式),emacs,keyboard-shortcuts,Emacs,Keyboard Shortcuts,如果我想在emacs中更改窗口,我会执行C-x o,这对我来说很好……但是当我想连续多次更改窗口时,C-x o就不那么方便了……有没有一种方法可以在第一次C-x o后只按一下就可以更改窗口? 一般来说……是否有一个(单一)的击键会重复我的上一个快捷方式?我使用C-tab切换窗口: (global-set-key [C-tab] 'other-window) 按住Control键,只需按tab键即可重复跳转窗口 编辑:我的原始答案包含以下内容 我不认为有一个内置的方式来重复上一个命令的基本命令像

如果我想在emacs中更改窗口,我会执行C-x o,这对我来说很好……但是当我想连续多次更改窗口时,C-x o就不那么方便了……有没有一种方法可以在第一次C-x o后只按一下就可以更改窗口?
一般来说……是否有一个(单一)的击键会重复我的上一个快捷方式?

我使用C-tab切换窗口:

(global-set-key [C-tab] 'other-window)
按住Control键,只需按tab键即可重复跳转窗口

编辑:我的原始答案包含以下内容

我不认为有一个内置的方式来重复上一个命令的基本命令像这样

这不再是事实。Emacs现在包含repeat.el,它完全允许rabidmachine9要求的行为

以下代码将创建一个重复的
other窗口
,这样在第一次按
C-x o
后,随后按
o
将继续移动到下一个窗口

(需要“重复”)
(defun make repeatable命令(cmd)
“返回一个新命令,该命令是CMD的可重复版本。
新命令名为CMD repeat。CMD应为引号
指挥部。
这允许您将命令绑定到复合击键,并
仅使用最后一个键重复此操作。例如:
(全局设置键(kbd \“C-C a\”)(使命令“foo”可重复)
将创建一个名为foo repeat的新命令。键入C-C a将
只需调用foo。键入C-ca将调用foo三次,
等等
请参见此处的相关讨论:
http://batsov.com/articles/2012/03/08/emacs-tip-number-4-repeat-last-command/#comment-459843643
https://groups.google.com/forum/?hl=en&fromgroups=#!topic/gnu.emacs.help/RHKP2gjx7I8“
(fset(实习生(concat(符号名称cmd)“-重复”))
`(lambda,(帮助函数arglist cmd);;arg list
,(格式为“可重复版本的“%s”。(符号名cmd));;文档字符串
,(交互式表单cmd);;交互式表单
;另请参见重复消息功能
(setq最后一个可重复命令',cmd)
(重复零次)
(实习生(concat(符号名称cmd)“-重复”))
(全局设置键(kbd“C-x o”)(使命令可重复“其他窗口”)

然后,使用相同的模板,将函数
生成可重复的命令
用于创建其他重复命令。

您在帧中有10个窗口,并且您连续多次执行
M-x其他窗口
,我认为您的意思是从窗口2跳到窗口8,然后跳到窗口1等等。通过连续执行大量的
其他窗口
,我可以想象,在到达所需窗口之前,您不会做任何重要的事情

查看绑定到
C-u
通用参数是否有帮助。在10窗口框中,如果您在第3窗口,并且想进入第9窗口,则您将跳到下一个第6窗口。所以你会做
C-u6c-xo
。或者,您也可以执行
C-u-4c-xo
并从第3窗口到达第9窗口。

退房;它使您只需按住修改器键并按箭头键即可沿该方向移动到窗口。多年来,我一直在使用默认修饰符(shift),奇怪的是,它不会干扰我在其他应用程序中使用shift箭头文本选择的冲动


还有一个用于帧的,我真的应该试试…

晚会有点晚了,但是还有一个(在MELPA中称为“窗口号”)


这包括modeline中的窗口编号
-1-
-2-
等,并提供
M-1
M-2
等键绑定以直接选择它们。非常快。

谢谢你的回答。我必须将脚本放在我的.emacs中吗?是的,将该行添加到你的.emacs将为每个emacs会话设置密钥。要在不重新启动的情况下将其添加到当前会话中,只需在临时缓冲区中输入该行,然后键入C-j即可。windmove和framemove非常棒。我曾经有自己的
其他窗口
的“快速”键绑定,但一旦开始使用这些包,我就完全放弃了它。通过视觉方向切换窗口比按照内部存储的顺序循环切换窗口更直观。在melpa中,这看起来像是命名为
窗口编号