在 ConEmu 中运行时让 Shift-Tab 在 Vim 中起作用

在 ConEmu 中运行时让 Shift-Tab 在 Vim 中起作用

我有这些映射在我的 Vim 初始化文件中:

nnoremap <S-Tab> <LT><LT>
vnoremap <S-Tab> <LT>gv

目的是能够使用SHIFT-取消缩进TAB。这在 GVim 和 VsVim 中运行良好,但在 ConEmu 内运行的 Vim 中不起作用。

但是,在 Vim 之外的 ConEmu 命令行上,使用-向前TAB和向后进行制表(例如,通过文件名)都可以正常工作,因此 ConEmu 必须对-序列执行一些有意义的操作,并且如果可能的话,我宁愿不破坏命令行行为(尽管如果必须选择,我会选择 Vim 功能)。SHIFTTABSHIFTTAB

我无法确定 Vim 认为它看到的这个按键序列是什么。如果我执行CTRL- v SHIFT- TAB,结果为Î。当我执行 时char2nr(),我得到206,而且确实,这似乎是 Unicode 字符 206。这个结果 206 可以通过 和 键入该序列得到确认:echo getchar()。但是,执行map Î <S-Tab>不起作用。

我怎样才能使我的映射起作用?

答案1

版本 141216 修复了您的问题。

顺便说一句,您的解决方法不再需要,但是使用多个keysGuiMacro 函数并不是最佳的,最好使用某种方式keys("^[","[","Z")或仅仅使用print("\e[Z")

答案2

我找到了一个解决方法。不幸的是,它破坏了在控制台上反向切换文件名的功能,^[[Z而是插入,所以我仍在寻找比这更好的答案。但是,它确实使SHIFT-TAB在 Vim 中工作,而无需进一步修改 Vim 的配置。我使用 ConEmu 的宏功能将ConEmu 中的SHIFT-映射TAB到 Vim 转义序列^[[Z(参见:set t_kB),默认情况下它已经将其解释为<S-Tab>。宏是keys("^["); keys("["); keys("Z"),如下所示。

ConEmu 设置窗口中的映射宏

相关内容