Shift-{Esc,Fx} 上的奇怪行为

Shift-{Esc,Fx} 上的奇怪行为

有时,在 Vim 中切换模式时,我会忘记将手指从按键上移开Shift。这个无意之失可能是从其他终端传来的负担,但我从未见过我的输入受到这种处理。

从命令模式切换到输入模式后,如果我按下该EscShift,Vim 将显示<9b>(控制序列引入器)而不是切换到命令模式。

至少有两种解决方法预期行为可在 mintty 网站上找到(常问问题问题)。

“避免 vim 中的退出超时问题
:让 &t_ti.="\e[?7727h"
:让 &t_te.="\e[?7727l"
:noremap <Esc>O[ <Esc>
:noremap!<Esc>O[ <Esc>

“重新映射转义
:imap <特殊> <CSI> <ESC>

我的问题是关于第一个解决方案的语法和含义。从外观上看,它似乎t_ti被分配了一个文字值,但我不确定为什么需要“c address-of”运算符。我也不确定为什么有两个noremap语句。

答案1

t_tit_te都是 Vim 选项。通常使用命令为它们赋值:set,如:set t_ti=abcde,其中右侧(abcde在此示例中)是文字字符串。:let命令比 更灵活:set,可用于设置除选项之外的其他类型变量的值。为了在此上下文中将选项与其他类型的变量区分开来,Vim 在选项名称前加上&。请参阅

:help options
:help :let-&

从第二个引用中,您还可以看到.=运算符将参数字符串附加到左侧的变量。

:noremap命令适用于 Normal、Visual 和 Operator-pending 模式下的映射。该:noremap!命令适用于所有其他模式下的映射:Insert 和 Command-line。请参阅

:help :map
:help :map!
:help mapmode-nvo
:help mapmode-ic

Vim 的映射文档全部在 map.txt 文件中,可通过 找到:help map.txt。虽然 Vim 的文档通常都非常好,但我发现该特定部分很难理解。这些部分可能更清楚:

:help 05.3
:help 40.1

相关内容