2

クイックフィックス ウィンドウを開いたときに、次のマッピングを無効にしたいと思います。

map <F5> :ZoomWin<cr>
4

1 に答える 1

6

クイックフィックスのことですか?その場合、次の 3 つの方法があります。

  1. <expr>マッピングを使用します。

    nnoremap <expr> <F5> (&buftype is# "quickfix" ? "" : ":\<C-u>ZoomWin\n")
    
  2. BufEnter イベントを使用してマッピングを設定/復元します。

    augroup F5Map
        autocmd! BufEnter * :if &buftype is# 'quickfix' | nunmap <F5> | else | nnoremap <F5> :<C-u>ZoomWin<CR> | endif
    augroup END
    
  3. マッピングが必要なバッファーに対してのみローカルに作成します。

    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" : "")
于 2012-11-03T11:42:58.337 に答える