为什么vim在删除模式下启动?

Eri*_* Hu 1 vim

如问题中所述,我的vim以删除模式开始.如果我打开一个文件并点击j开始导航,那将删除第一行.

我把这个问题分解到了我的这行.vimrc:

nnoremap <silent> <esc> :noh<return><esc>
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这甚至会触发删除模式.最重要的是,我相信我添加<silent>了指示vim进行绑定而不执行它,这似乎并非如此.

为什么会发生这种情况的原因是什么?

(注意,这个映射是告诉vim在我点击esc时清除搜索亮点)

kev*_*kev 5

如果在终端中运行此命令:

$ vim file.txt -c 'nnoremap <silent> <esc> :noh'
Run Code Online (Sandbox Code Playgroud)

它会在底部显示:

:noh[>1;3201;0c
Run Code Online (Sandbox Code Playgroud)

vimchange-mode以某种方式进入.


您可以更改<esc><F5>(或其他键).如果你使用gvim,没有问题.它是由终端特殊密钥转义引起的.

  • 当使用 `+termresponse` 功能构建时,*Vim* 会向终端发送一个特殊的控制序列(参见 `:set t_RV?`)。当您的终端仿真器看到此序列时,它会使用序列 ESC `]&gt;1;3201;0c` 进行响应。ESC 映射到 `:noh`,您可以在命令行上获得序列的其余部分。通过 OP 的映射,序列的其余部分将被视为正常命令,因此最后一个“c”启动更改命令。因此,这个 ESC 映射会干扰 *xterm* (或其他)给 *Vim* 的查询响应。 (2认同)