我在使用的普通模式映射时遇到一个奇怪的问题Esc。
如果escmapvimrc
使用内容创建文件:
set nocompatible
set showcmd " Doesn't affect the problem: just makes it easier to see
nnoremap <Esc> :noh<CR><esc>
然后使用以下vimrc启动vim:
vim --noplugin -u escmapvimrc
然后,vim将以操作员待定模式启动,c
命令等待进一步输入,显示一个空文件,并且命令行显示:noh
。
如果您删除该nnoremap
行,那么问题就消失了。
如果您调试并逐步完成所有操作,则会得到以下输出:
Entering Debug mode. Type "cont" to continue.
/[...]/escmapvimrc
line 1: set nocompatible
>s
/[...]/escmapvimrc
line 2: set showcmd " Doesn't affect the problem: just makes it easier to see
>s
/[...]/escmapvimrc
line 3: nnoremap <Esc> :noh<CR><esc>
>s
/[...]/escmapvimrc
line 4: End of sourced file
>s
Press ENTER or type command to continue
按回车后,将显示Vim启动屏幕,其下方:
Entering Debug mode. Type "cont" to continue.
cmd: noh
>s
然后,Vim启动屏幕消失,并且您处于操作员待定模式,如上所述。
这是怎么回事?
编辑:行为如Vim 7.3中所述。在Vim 7.4.52中,nmap
当启动不带文件的Vim时,Vim会以Replace模式启动。(但是,如果Vim 7.4.52是用文件启动的,则它也将在执行c命令的情况下启动。)不管哪种方式,删除nmap时问题都会消失。
nnoremap <c-l> :noh<cr><c-l>
/alksdjflaskj
来清除搜索突出显示,这也非常快。
:noh
我显示。用gvim进行相同操作不会显示此行为。