AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1281034
Accepted
gerlos
gerlos
Asked: 2020-10-09 00:48:26 +0800 CST2020-10-09 00:48:26 +0800 CST 2020-10-09 00:48:26 +0800 CST

无法在 Vim 和 ncurses 应用程序中发送 ENTER 键 Byobu 和 Tmux

  • 772

我最近从 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.confand中添加以下行~/.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 本身无关。不知道为什么我以前没有意识到。

keyboard vim command-line byobu tmux
  • 2 2 个回答
  • 592 Views

2 个回答

  • Voted
  1. Best Answer
    gerlos
    2021-10-16T02:36:31+08:002021-10-16T02:36:31+08:00

    修修补补xev我发现Enter这个键盘上的按钮发送了错误的键码。我将在这里留下我的发现以及我的解决方法,以便对其他人有用。

    当我按下Enter此键盘上的按钮时,它会发送一个键码 104, KP_Enter,而不是通常的键码 36, Return:

    $ xev
    ...
    KeyPress event, serial 47, synthetic NO, window 0x3c00001,
        root 0x7a5, subw 0x0, time 5065933, (762,538), root:(934,702),
        state 0x0, keycode 104 (keysym 0xff8d, KP_Enter), same_screen YES,
    "   XLookupString gives 1 bytes: (0d) "
    "   XmbLookupString gives 1 bytes: (0d) "
        XFilterEvent returns: False
    ...
    

    所以这是一个硬件“问题”,因为Return和KP_Enter 不一样,也不会总是给出相同的结果。

    所以要解决这个问题,我需要将 keycode 104 重新映射到Return. 这可以这样使用xmodmap:

    $ xmodmap -e "keycode 104 = Return NoSymbol Return"
    

    为了使更改永久生效,可以在每次登录时运行此命令,并将其添加到"Startup Applications",如下所示:

    在此处输入图像描述

    • 1
  2. Nicholas Marriott
    2020-10-12T07:50:43+08:002020-10-12T07:50:43+08:00

    这很奇怪。它在 tmux 之外工作,是吗?

    如果您在没有配置的情况下运行 tmux,它仍然会发生吗?启动一个新的 tmuxtmux -Ltest -f/dev/null new并查看它是否也存在问题。如果没有,那么您将需要查看您的配置并查看导致它的原因。

    我能想到的唯一其他事情是检查您的终端是否实际上正在发送 Cm for Enter(您可以运行cat然后按下键并查看发送的内容),或者与kentterminfo 条目中的功能有关。但是他们会很容易测试,为什么他们在 Ubuntu 上是错误的,而且只是为了你?也许尝试确保您的 ncurses 软件包是最新的。

    • 0

相关问题

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve