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
    • 最新
    • 标签
主页 / unix / 问题 / 717281
Accepted
Guilherme Casas Gonçalves
Guilherme Casas Gonçalves
Asked: 2022-09-15 08:34:55 +0800 CST2022-09-15 08:34:55 +0800 CST 2022-09-15 08:34:55 +0800 CST

如何在 WSL 中将 Ctrl-i 与 TAB 分开?

  • 772

我在带有 Ubuntu 的 WSL2 上使用 bash,我希望 Crtl-i 和 TAB 发送不同的键码,这样我就可以在 emacs 上重新映射 Ctrl-i,同时仍然使用 TAB 进行缩进。我尝试按照this question.Xresources中的答案进行操作,该答案建议通过编辑文件然后运行来重新映射Ctrl-i xrdb ~/.Xresources。我的.Xresources文件中有这个

XTerm*metaSendsEscape: true
XTerm*eightBitInput: false

Xterm*Translations: #override\
        Ctrl ~Meta ~Shift <Key>i :string("\033[105;5u")

除了打电话xrdb .Xresources给我这个信息

xrdb: Connection refused
xrdb: Can't open display 'localhost:0.0'

这似乎是因为 WSL 是一个纯文本编辑器,而我对文件的更改没有产生效果。我echo $TERM在 bash 上运行以确保它正在使用 xterm 并且它返回了xterm-256color,所以这似乎是正确的。

有没有办法让 WSL 使用.Xresources或任何其他方式来区分 WSL 中的 Ctrl-i 和 TAB?

keyboard-shortcuts xterm
  • 1 1 个回答
  • 28 Views

1 个回答

  • Voted
  1. Best Answer
    NotTheDr01ds
    2022-09-16T10:10:44+08:002022-09-16T10:10:44+08:00

    你有一些很好的研究,加上对 WSL 中终端情况的一些误解。

    您链接到的问题/答案专门xrdb为xterm. 可能会使用许多终端,并且重新映射的方法因每个终端而异。该特定答案甚至为三个不同的终端提供了解决方案:

    • Xterm
    • 网址
    • 猫咪

    虽然可以在 WSL 下使用那些(见这个答案的结尾),但这些都不是默认的 WSL 终端。WSL 有两种可能的默认终端:

    • 在 Windows 10 中,旧版 Windows 控制台主机。这与用于 CMD 和 PowerShell 的终端相同。
    • 在 Windows 11 中,(相当)新的 Windows 终端取代了控制台主机。与其前身相比,它相当先进,包括许多附加功能。终端也可以安装在 Windows 10 中,但不能在那里设置为默认值。

    因此,您需要有关您正在使用的终端的说明,而不是真正的 WSL。

    据我所知,Windows 控制台主机不包含任何关键的重新映射功能。但是,您可以使用AutoHotkey或(可能)AutoIt之类的东西来拦截Ctrl+i并发送正确的转义序列。在我看来,至少 AutoHotkey 有这个能力,但我没有为此尝试过。

    但是,我建议您继续安装 Windows 终端(如果您还没有安装的话)。它在适用于 Windows 10 的 Microsoft Store 中可用(并自动安装在最新的 Windows 11 版本中)。

    它确实包括重新映射键的能力,但它有点“隐藏”在配置文件后面。虽然终端现在包含用于编辑某些设置的 GUI,但像这样的高级功能确实需要手动编辑settings.json.

    为此:

    • 在 Windows 终端中,转到下拉菜单并打开设置

    • 在设置的左下角,选择“打开 JSON 文件”选项。

    • 旁注:建议您安装 VSCode,或者至少安装一些可以很好地处理 JSON 的编辑器。VSCode 具有理解 Windows 终端架构的额外优势,因此它会在您键入时自动完成选项。

    • 在列表中添加以下内容"actions":

      {
          "command": {
              "action": "sendInput",
              "input": "\u001b[105;5u"
          },
          "keys": "ctrl+i"
      }
      

    虽然我没有使用 Emacs 对此进行测试,但我确实在 Fish shell 中确认fish_key_reader+Ctrl正在i发送指定的控制代码而不是 Tab 字符。

    在 WSL 中使用 Linux/X 终端

    如果您确实想使用其中一个 Linux 终端,则可以使用 WSL。您只需使用支持 WSLg 的 Windows 11(允许您在 WSL2 中运行 Linux GUI 应用程序)或使用我在此超级用户答案中详述的方法之一在 Windows 10 中配置 GUI 支持。有了它,如果您愿意,您可以运行 Xterm 并使用您链接的答案中的说明。

    • 0

相关问题

  • LMB + CTRL 禁用

  • 如何停止使用 Kazam 录制

  • 将 CAPS+hjkl 绑定到方向键;大写到 ESC

  • 睡眠快捷指令 lubuntu?

  • 在 Vim 中删除到命令行末尾

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve