我想在打开quickfix窗口时禁用以下映射。

map <F5> :ZoomWin<cr>

最佳答案

你是说quickfix吗?如果是这样,可以通过三种方式:


使用<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



更新:当任何打开的窗口包含quickfix缓冲区时,禁用映射使用以下命令:

nnoremap <expr> <F5> (&buftype is# "quickfix" || empty(filter(tabpagebuflist(), 'getbufvar(v:val, "&buftype") is# "quickfix"')) ? ":\<C-u>ZoomWin\n" : "")

关于vim - 仅当Vim中没有打开quickfix窗口时才如何启用映射?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13208660/

10-10 05:28