1

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

4

2 回答 2

1

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

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

根据Windows 终端问题跟踪器,他们意识到了这一点,并且他们有可能在未来使用某些 xterm 特定的序列传递这些密钥,但目前这不起作用。我不确定即使他们确实实现了它,它是否会在 Vim 中按您期望的那样工作,尽管它有可能。

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

于 2019-10-27T04:07:32.073 回答
0

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

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

AHKscript 喜欢(未测试)

^Space::
send {Ctrl}g
return

然后在 vimrc

nnoremap <c-g> ...
于 2019-10-28T05:13:02.660 回答