Shift + Backspace 不适用于 Vim for Windows

Shift + Backspace won't work on Vim for Windows

在您将此问题标记为双重问题之前,请听我说完,因为我环顾四周但找不到任何可以解决我的问题的方法。

在 Vim 中 Windows(通过控制台中的 CMD 通过 Powershell 运行 访问),退格键工作正常。按 Shift(或 Ctrl)+ Backspace 会在屏幕上打印出一个看起来很奇怪的 I,然后按 Ctrl+C。

使用 :set 查看我的 Vim 上退格键的键码是什么:“εCx”。考虑到上述行为,这是有道理的。有趣的是,这个键码显然是用于普通退格键的。但是,我的问题在正常按退格键时不会出现,考虑到正常的键码是这个奇怪的字符集合,这对我来说没有意义。仅在退格键与 shift 键组合时出现。

我不明白为什么退格键不发送 ^H 或 ^?。我听说这两个选项很受欢迎。我假设我的终端以某种方式搞砸了,但我不明白为什么它会在按下 shift 键时发送不同的退格键码。

提前致谢。

我不知道为什么这会发生在你的配置中,但你应该能够使用inoremap让它做你想做的事。

交互式地,你可以通过输入这个来测试我的想法

:inoremap <hit control-V><hit shift-backspace> <hit control-v><hit backspace>

这将做的是在插入模式下为 <shift-backspace> 生成的转义序列创建一个非递归映射到 <backspace> 生成的转义序列。

在我的例子中,结果看起来像

:inoremap ^? ^?

因为我的 <shift-backspace> 产生与 <backspace> 相同的序列,但在你的情况下它应该产生对你更有用的东西。

一旦你弄明白了,把它移到你的 .vimrc 不带冒号,这将有望以持久的方式解决你的问题。

你有和我一样的问题吗?我想知道这种情况在 Windows Powershell 中发生在哪里,但在 gvim 中没有发生,或者当你在 运行 vimcmd。如果是这样,我认为其他响应者是正确的,vim 使用 shift+BS 与 BS 没有什么不同,但 Powershell 命令 运行ning 是。这不是答案,除了使用 gvim 之外,我不知道解决它的方法。但是如果你想进一步挖掘,我建议它是 Windows Powershell 那是问题(当然除非我错了)而不是 vim.

我是这样解决这个问题的:

imap Î^Cy <BS>

在我的 (Windows) 终端中,Î^Cy 是 shift-backspace 而 Î^Cz 是 ctrl-backspace,我已经重新映射了它们。如果 Î^Cx 在您的终端中是 shift-backspace,看起来是这样,请尝试将其添加到您的 vimrc 文件中:

imap Î^Cx <BS>