使用Ctrl-W_W在VIM中跳过窗口

时间:2010-10-21 05:27:37

标签: macvim vim

当我在VIM中打开几个窗口时,每当我按下Ctrl-W_W时,我总是会跳过其中一个窗口(包含我的项目使用Aric Blumer的Project插件)。

换句话说,我想在我的文档窗口中循环,好像项目窗口不是其中之一。当我确实想进入项目窗口时,我将使用我为此专门创建的映射。

有没有办法标记一个窗口,以便它被Ctrl-W_W跳过或者我需要一个脚本?我很喜欢Vim,但仍处于学习曲线的陡峭部分。

1 个答案:

答案 0 :(得分:6)

您必须编写一个循环到下一个窗口的函数(它更容易维护),如果它与您不想进入的窗口的名称相匹配,则跳过它。

类似的东西:

function! s:NextWindowBut(skip,dir)
  let w0 = winnr()
  let nok = 1
  while nok
    " exe "normal! \<c-W>w"
    " or better
    exe 'wincmd '.a:dir
    let w = winnr()
    let n = bufname('%')
    let nok = (n=~a:skip) && (w != w0)
    " echo "skip(".n."):".(n=~a:skip)." w!=w0:".(w != w0)." --> ".nok
  endwhile
  if w == w0
    echomsg "No other acceptable window"
  endif
endfunction

nnoremap <silent> <C-W>w :call <sid>NextWindowBut('thepattern','w')<cr>
nnoremap <silent> <C-W>W :call <sid>NextWindowBut('thepattern','W')<cr>