首页 > 解决方案 > psearch (Vim) 的奇怪行为

问题描述

所以这是我的一部分.vimrc

" Mapping
nnoremap <F3> :cclose<cr>
nnoremap <F4> :w <bar> !cd ../build; make<cr><cr>:cw<cr>
autocmd filetype cpp nnoremap <F6> :Termdebug %:r<CR><c-w>2j<c-w>L
nnoremap <F12> :!cd ..; !ctags -R 
"nnoremap <C-[> :psearch <C-R><C-W><CR>
nnoremap <C-H> <C-W>h
nnoremap <C-J> <C-W>j
nnoremap <C-K> <C-W>k
nnoremap <C-L> <C-W>l
inoremap <C-H> <Left>
inoremap <C-J> <Down>
inoremap <C-K> <Up>
inoremap <C-L> <Right>
nnoremap <esc><esc> :silent! noh<cr>
inoremap " ""<left>
inoremap ' ''<left>
inoremap ( ()<left>
inoremap [ []<left>
inoremap { {}<left>
inoremap {<CR> {<CR>}<ESC>O
inoremap {;<CR> {<CR>};<ESC>O

如您所见,我评论了一行,我认为这给了我一些问题。当没有评论并且我打开vim时,这就是我得到的:

截屏

实际文件的预览窗口被打开,我进入替换模式,还有更奇怪的行为,例如,如果我处于插入模式并且我按下<Esc><Esc>并按下一些箭头键 vim 插入 D 或 U (你可以想象取决于我按哪个键)

标签: vimmapping

解决方案


您遇到此问题是因为<C-[>具有与ESC.

:h keycodes

然后你搜索“esc”,你会发现两者都有keycode 27。也就是说,你映射ctrl-[了,实际上,你映射了ESC

在 INSERT 模式下,当您按两次 ESC 时,第一个 ESC 将您带回 NORMAL 模式,第二个 ESC 触发您的映射,即:psearch命令。

此外,当您在正常模式下按 ESC 时,也会触发映射。

解决方法也很简单,不要映射<C-[>


推荐阅读