Para trocar window
posições, o efeito é equivalente à troca de buffers que essas duas janelas mostram.
Por exemplo, se a janela A tiver o buffer 2 e a janela B o buffer 8, vá para a Janela A, selecione o buffer 8 e, em seguida, para a Janela B, selecione o buffer 2.
Essa ideia me inspirou a escrevê-la - e já está na minha própria caixa de ferramentas
Código da função:
function! WinBufSwap()
let thiswin = winnr()
let thisbuf = bufnr("%")
let lastwin = winnr("#")
let lastbuf = winbufnr(lastwin)
exec lastwin . " wincmd w" ."|".
\ "buffer ". thisbuf ."|".
\ thiswin ." wincmd w" ."|".
\ "buffer ". lastbuf
endfunction
command! Wswap :call WinBufSwap()
map <Leader>bs <C-c>:call WinBufSwap()<CR>
- Selecione a janela A
- Selecionar janela B
:call WinBufSwap()
Isso troca os buffers nas duas janelas pré-selecionadas, deixando o cursor na janela original.
A seleção das duas janelas desejadas a serem trocadas antes do tempo é o detalhe principal, pois é necessário especificar para o Vim com quem trabalhar.