如何避免在目录中的“ ^”后键入“ space”来向上移动目录?


9

^是用于移至dired(“上一级目录”)中的父目录的键绑定。

然而,在Gnu EmacsWindows 7 Professional 64-bit有我的德国的键盘布局,这是不够的输入“^”,但我不得不事后键入空间,使键绑定工作。

如何重新定义键绑定,以避免不得不按下空格并仅使用“ ^”向上移动?


C-h k ^<space> 退货

^运行命令dired-up-directory,该目录是`dired + .el'中的交互式已编译Lisp函数。

它绑定到^,。

(目录目录和可选的OTHER-WINDOW)

在当前目录的父目录上运行Dired。在此缓冲区或另一个缓冲区中找到父目录。如有必要,创建一个缓冲区。


4
这是一个操作系统问题,因为此行为听起来像粘滞键,并且内置在某些键图中,例如us-intl在Linux上。
wasamasa

听起来好像wasamasa是正确的,在这种情况下,您应该询问如何将命令绑定到其他键。
Andrew Swann 2015年

@AndrewSwann:也许吧,也许不是。检查是一件好事,是的。但是,假设microsoft-windows标签是合适的,那么Linux的行为在这里应该是无关紧要的。
2015年

检查这个最简单的办法就是寻找相同的行为是否适用于其他程序,如打字^notepad.exe
wasamasa 2015年

3
我认为您只有几个选择:(1)使用不同的键盘布局,其中^不是死键-这是在操作系统级别而不是emacs中完成的,或者(2)将其他键绑定到dired-up-directory并使用它而是(3)解决问题,然后在^后面输入空格。我本人要和(3)一起去,但是我确实觉得很烦。
Harald Hanche-Olsen

Answers:


11

通过键盘设置,键^很可能是“死键”。它是一个密钥,旨在与另一个密钥结合使用,以产生另一个字符。在这种情况下,它的意思是产生重音字符:^ e将产生ê,^ a将产生â,依此类推。

但是,它不应该特定于emacs:我猜您所有的应用程序都要求您按^并在屏幕上产生实际的^。

要解决此问题,您只需使用其他键盘布局即可。如果您在Windows环境中使用德语布局,我将仅参考/superuser/280005/how-to-make-and-non-dead-keys-on-windows-7- with-german-keyboard-layout,希望这是正确的做法。


0

我猜您已经确认^Dired中的绑定为are dired-up-directory,所以调用哪个命令不是问题,除非您或您加载的内容已建议该命令。(使用C-h k ^,让我们知道是否建议使用该命令。)

您使用标记了此内容microsoft-windows。也许提到您使用哪个MS Windows版本。我看不到Windows 7 64位版本。

如果使用来启动Emacs runemacs -Q,即没有初始化文件,是否会看到相同的行为?如果是这样,请从此处开始提供食谱runemacs -Q。在这种情况下,这可能是Emacs错误。

如果看不到问题所在,emacs -Q则递归将您的初始化文件一分为二,直到将其缩小以找到罪魁祸首。您可以使用command comment-region注释掉代码区域(C-u与代码一起注释掉该区域)。

找到罪魁祸首代码后,您可以对其进行更详细的调查。或者,如果您需要进一步的帮助,也可以在这里报告您的发现。为了获得最佳帮助,请尽可能具体。

至于重新定义密钥:这不是问题-只需使用(define-key dired-mode-map SOME-KEY 'dired-up-directory),其中SOME-KEY是密钥说明。例如,要将命令绑定到C-o,可以使用以下命令:

(define-key dired-mode-map (kbd "C-o") 'dired-up-directory)

在您发表评论和其他评论后更新-

由于您从中看到了相同emacs -Q的问题,所以问题可能出在您的MS Windows设置中(即,在Emacs外部)或Emacs本身存在错误。

但是其他评论清楚地表明,问题似乎出在MS Windows中。尝试关闭粘滞键


3
这几乎可以肯定。不过,@ wasamasa的评论完全相关。详细地说,重点是由于^是粘性的,emacs甚至在用户键入空格之前都看不到按键事件。
Harald Hanche-Olsen

感谢您的详细回答!是的,runemacs.exe -Q它是一样的。如果随后输入<space>或其他键,则在缓冲区中键入^只会输入字符。dired模式相同,需要^1 <space>向上移动。对于define-key:但我想使用^键进行此绑定,有没有办法避免它等待<space>?
MostlyHarmless

@Harald:那我该怎么办?
MostlyHarmless
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.