3

VIM で複数のウィンドウを開いている場合、Ctrl-W_W を押すたびにそのうちの 1 つ (Aric Blumer のプロジェクト プラグインを使用したプロジェクトを含むウィンドウ) を常にスキップしたいと考えています。

言い換えれば、プロジェクト ウィンドウがそれらの 1 つではないかのように、ドキュメント ウィンドウを循環させたいと考えています。実際にプロジェクト ウィンドウに移動したい場合は、この目的のために特別に作成したマッピングを使用します。

Ctrl-W_W でスキップされるようにウィンドウをマークする方法はありますか、それともスクリプトが必要ですか? 私は Vim が大好きですが、まだ学習曲線の急勾配の部分にあります。

4

1 に答える 1

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>
于 2010-10-21T11:55:06.070 に答える