我想在打开 quickfix 窗口时禁用以下映射。
map <F5> :ZoomWin<cr>
你是说快修吗?如果是这样,有以下三种方法:
使用<expr>
映射:
nnoremap <expr> <F5> (&buftype is# "quickfix" ? "" : ":\<C-u>ZoomWin\n")
使用 BufEnter 事件设置/恢复映射:
augroup F5Map
autocmd! BufEnter * :if &buftype is# 'quickfix' | nunmap <F5> | else | nnoremap <F5> :<C-u>ZoomWin<CR> | endif
augroup END
仅为需要的缓冲区在本地创建映射:
augroup F5Map
autocmd! BufEnter * :if &buftype isnot# 'quickfix' && empty(maparg('<F5>')) | nnoremap <buffer> <F5> :<C-u>ZoomWin<CR> | endif
augroup END
更新:要在任何打开的窗口包含快速修复缓冲区时禁用映射,请使用以下命令:
nnoremap <expr> <F5> (&buftype is# "quickfix" || empty(filter(tabpagebuflist(), 'getbufvar(v:val, "&buftype") is# "quickfix"')) ? ":\<C-u>ZoomWin\n" : "")