我最近从 Ubuntu 18.04 升级到 Ubuntu 20.04,在byobu
, tmux
, Vim 和 ncurses 应用程序中遇到了一个奇怪的问题:Enter不起作用,我需要使用CTRL+M代替。
例如,如果我在 Gnome 终端的 Byobu(或 Tmux)窗口中编辑 Vim 中的文件,键入Enter不会插入换行符,而是插入带有M
字符的新行。要插入新行,我需要输入CTRL+ M。因此,要退出 Vim,我需要输入ESC :q
CTRL+ M。
这也发生在 ncurses 应用程序中,例如ncdu
: 而不是Enter我需要使用CTRL+ M。
更改TERM
环境变量似乎有帮助,但不是 100%。我进入的默认值byobu
是tmux
,TERM=screeen-256color
但如果我将其更改为TERM=xterm-256color
一切似乎在 Vim 中工作正常,但在ncdu
.
除此之外,Enter当我使用更改 Byobu 配置时 key 不起作用F9- 正如我上面所说的,我需要使用CTRL+M来选择配置中的项目。
我还尝试在~/.tmux.conf
and中添加以下行~/.byobu/.tmux.conf
,但它仅对 Vim 有帮助:
set -g default-terminal "xterm-256color"
问题xterm
也发生在。
我该如何解决这个问题?
更新
我再次尝试了一个新用户,并遇到了同样的问题,所以我的猜测是它可能与系统相关。
更新 2
修补一下,xev
我发现这台笔记本电脑的键盘有些奇怪——即使我在意大利,它也是一个 ANSI 键盘(标准的意大利键盘布局是 ISO),并且 Enter 按钮发送了错误的键码。
当我按下Enter按钮时,它会发送一个 kyecode 104, KP_Enter
,而不是通常的 keycode 36, Return
。所以这是一个硬件问题,可能与 Ubuntu 本身无关。不知道为什么我以前没有意识到。
修修补补
xev
我发现Enter这个键盘上的按钮发送了错误的键码。我将在这里留下我的发现以及我的解决方法,以便对其他人有用。当我按下Enter此键盘上的按钮时,它会发送一个键码 104,
KP_Enter
,而不是通常的键码 36,Return
:所以这是一个硬件“问题”,因为
Return
和KP_Enter
不一样,也不会总是给出相同的结果。所以要解决这个问题,我需要将 keycode 104 重新映射到
Return
. 这可以这样使用xmodmap
:为了使更改永久生效,可以在每次登录时运行此命令,并将其添加到"Startup Applications",如下所示:
这很奇怪。它在 tmux 之外工作,是吗?
如果您在没有配置的情况下运行 tmux,它仍然会发生吗?启动一个新的 tmux
tmux -Ltest -f/dev/null new
并查看它是否也存在问题。如果没有,那么您将需要查看您的配置并查看导致它的原因。我能想到的唯一其他事情是检查您的终端是否实际上正在发送 Cm for Enter(您可以运行
cat
然后按下键并查看发送的内容),或者与kent
terminfo 条目中的功能有关。但是他们会很容易测试,为什么他们在 Ubuntu 上是错误的,而且只是为了你?也许尝试确保您的 ncurses 软件包是最新的。