Пропуск окна в VIM с помощью Ctrl-W_W - PullRequest
3 голосов
/ 21 октября 2010

Когда у меня в VIM открыто несколько окон, я бы всегда хотел пропустить одно из них (то, которое содержит мой проект с использованием плагина Project Aric Blumer's Project) при каждом нажатии Ctrl-W_W.

Другими словами, я хотел бы переключаться между окнами моего документа, как будто окно Проекта не было одним из них. Когда я действительно захочу войти в окно проекта, я буду использовать отображение, созданное специально для этой цели.

Есть ли способ пометить окно, чтобы оно пропускалось по Ctrl-W_W, или мне нужен скрипт? Я люблю Vim, но все еще нахожусь в крутой части кривой обучения.

1 Ответ

6 голосов
/ 21 октября 2010

Вы должны написать функцию (ее легче поддерживать), которая циклически переходит к следующему окну, и пропустить ее, если она соответствует названию окон, в которые вы не хотите входить.

Что-то вроде:

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>
...