有时,在 Vim 中切换模式时,我会忘记将手指从按键上移开Shift。这个无意之失可能是从其他终端传来的负担,但我从未见过我的输入受到这种处理。
从命令模式切换到输入模式后,如果我按下该Esc键Shift,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_ti
和t_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