gpt4 book ai didi

emacs - "screen"在 ^Z 之后以某种方式取消了我在 emacs 中的箭头键的映射

转载 作者:行者123 更新时间:2023-12-03 10:48:21 24 4
gpt4 key购买 nike

每次使用 emacs 时,我都可以很好地使用箭头键来移动光标。但是当我在屏幕内运行 emacs 并且我将 emacs 推到后台(ctrl-Z)然后将它返回到前台时,我的箭头键不再起作用,例如

M-[ a is undefined

当我在屏幕外运行 emacs 时,不会发生这种行为。

有任何想法吗?这是一些屏幕设置吗?

最佳答案

Screen(以及几乎所有其他终端模拟器)模拟的 vt100 终端有两种模式,正常模式和应用程序模式。普通模式用于逐行应用程序,应用程序模式用于全屏应用程序。模式之间的区别在于箭头键发送 different control sequences (我不知道为什么):例如ESC O A全屏模式和 ESC [ A在正常模式下。似乎当您按下 Ctrl+Z 时,Emacs 将终端切换回正常模式,但是当您将其返回到前台时,它不会再次切换到全屏模式,或者 Screen 无法正确响应 Emacs 的命令。

一种可能的解决方法是 bind the same character sequences在您的 .screenrc 中的两种模式下,例如

bindkey -k ku stuff ^[OA
bindkey -k kd stuff ^[OB
bindkey -k kr stuff ^[OC
bindkey -k kl stuff ^[OD

另一个可能的解决方法是告诉 Emacs 解释两个键序列,而不管终端说什么。尽管这在原则上是一个坏主意,因为某些终端可能会将这些键序列用于不同的键,但我从未遇到过这种不兼容的终端,而且我怀疑在过去的 20 年或更长时间里没有制造过这种终端。
(define-key function-key-map "\eOA" [up])
(define-key function-key-map "\e[A" [up])
(define-key function-key-map "\eOB" [down])
(define-key function-key-map "\e[B" [down])
(define-key function-key-map "\eOC" [right])
(define-key function-key-map "\e[C" [right])
(define-key function-key-map "\eOD" [left])
(define-key function-key-map "\e[D" [left])

真正的解决方案是找出导致问题的原因。这可能是 Screen 中的错误、Emacs 中的错误、Screen 运行的终端(模拟器)中的错误、termcap 或 terminfo 数据库中的错误或配置错误。如果您想对此进行调查,请首先提及您的操作系统、运行 Screen 的终端(模拟器)、您获得 Screen 的位置(或您如何编译它,如果这是您所做的)以及什么版本,同上Emacs,是否在 Screen 之外观察到同样的问题, echo $TERM 的输出和 echo -E "$TERMCAP"屏幕内。

关于emacs - "screen"在 ^Z 之后以某种方式取消了我在 emacs 中的箭头键的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4548106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com