【问题标题】:How to rebind ctrl-space in vim running inside Windows Terminal Preview?如何在 Windows Terminal Preview 中运行的 vim 中重新绑定 ctrl-space?
【发布时间】:2020-02-22 08:20:32
【问题描述】:

所以似乎 ctrl-space 被 Windows 终端错误地转换为 ctrl-@ ,我想知道是否有任何解决方法?我已经为其他终端看到了类似问题的答案,但它们似乎不起作用。

【问题讨论】:

    标签: vim windows-terminal


    【解决方案1】:

    Autohotkey 是 Windows 中 vim 的好公司。它可以将 ctrl-space 映射到任何其他键,并通过运行脚本将它们发送到 vim。

    https://www.autohotkey.com/docs/Hotkeys.htm#Intro

    AHKscript 类似(未测试)

    ^Space::
    send {Ctrl}g
    return
    

    然后在vimrc中

    nnoremap <c-g> ...
    

    【讨论】:

      【解决方案2】:

      这基本上是大多数 Unix 终端工作方式的限制。控制键映射到有限的字符集,因此 Ctrl-@、Ctrl-Space 和 Ctrl-` 都映射到相同的东西并以相同的方式工作。这发生在终端仿真器和在真实 Linux 系统上运行的 VT 中。

      其他终端模拟器可能对此有一个选项,但 Windows 终端尝试模拟 xterm-256color 终端类型,它实现了您注意到的行为。即使其他终端仿真器确实支持它,但这并不意味着在其中运行的程序支持它;他们可能会收到这样的序列并且不知道如何处理它,特别是如果 TERM 设置为不支持区分的终端类型。

      根据Windows Terminal issue tracker,他们意识到了这一点,并且他们有可能在将来使用某些特定于 xterm 的序列传递这些密钥,但目前这不起作用。我不确定即使他们确实实现了它,它是否会在 Vim 中按预期工作,尽管它有可能。

      如果您不使用现有功能,您可以重新映射 Ctrl-@,或者只使用另一个键。

      【讨论】:

        猜你喜欢
        • 2011-06-11
        • 1970-01-01
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-24
        相关资源
        最近更新 更多