vim - 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 (你可以想象取决于我按哪个键)
解决方案
您遇到此问题是因为<C-[>
具有与ESC
.
:h keycodes
然后你搜索“esc”,你会发现两者都有keycode 27。也就是说,你映射ctrl-[
了,实际上,你映射了ESC
。
在 INSERT 模式下,当您按两次 ESC 时,第一个 ESC 将您带回 NORMAL 模式,第二个 ESC 触发您的映射,即:psearch
命令。
此外,当您在正常模式下按 ESC 时,也会触发映射。
解决方法也很简单,不要映射<C-[>
。
推荐阅读
- php - 从 PHP 5.2 (mysql) 迁移到 7.3 (pdo):从数据库加载的字符无法正确显示
- django - 如何在 Django 测试中为测试添加多个数据库
- google-cloud-platform - 启动 gcloud 时让计算引擎 vm 运行脚本
- elixir - 如何在 Elixir 中处理 POST 和 GET 请求?
- excel - excel vba在列中查找多个变量的开始行和结束行
- c++ - `create_directories` 的分段错误错误
- reactjs - 为什么我需要在firebase中取消订阅`onAuthStateChanged`
- csv - 使用 h5py 将 h5 文件转换为 csv
- javascript - 有没有办法在 PHP 中将 XML 文件转换为 JSON
- mysql - MySQL中的多行更新