サポート用ページ
このページはサポート用の一時的な書込に使用するページです。
書き込まれたコメントは、適当な時期に削除することがあります。
個人的に使っていたスクリプトです。
指定したウィンドウ名のウィンドウをクローズ/移動します。
"""""""""""""""""""""""""""""" " 各種ウィンドウをクローズ/移動 """""""""""""""""""""""""""""" " gs に割り当てる場合 nnoremap <silent> gs :call feedkeys("g,qq")<CR> nnoremap <silent> gs :<C-u>call MyWindowControl('close')<CR> " 'move'なら移動 " nnoremap <silent> gs :<C-u>call MyWindowControl('move')<CR> " クローズ/移動したいウィンドウ名前を優先順に指定 " 一つも存在しない場合は QuickFixウィンドウをトグル let g:MyWindowControlList = [ \ "__MRU_Files__", \ "__QFix_List__", \ "__Howm_Files__", \ "__Calendar__", \ "__submenu__", \ "__Tag_List__" \] function! MyWindowControl(mode) if !exists('g:MyWindowControlList') return endif let movemode = a:mode =~ '\cmove' ? 1 : 0 let bname = bufname(bufnr('%')) for n in g:MyWindowControlList if bname =~ n close return endif let winnr = bufwinnr(n) if winnr == -1 continue endif exe winnr.'wincmd w' if movemode return endif close wincmd p return endfor if exists('*ToggleQFixWin') ToggleQFixWin endif endfunction
単純なON/OFFだけなら以下でも可能です。
nnoremap <silent> gs :<C-u> call ToggleWindow('__Calendar__')<CR> function! ToggleWindow(name) if bufwinnr(a:name) == -1 call feedkeys("g,q") else exe bufwinnr(a:name) . 'wincmd w' close wincmd p endif endfunction